Python Selenium Webdriver-попробуйте, кроме цикла
Я пытаюсь автоматизировать процессы на веб-страницу, которая загружает кадр за кадром. Я пытаюсь настроить try-except
цикл, который выполняется только после подтверждения наличия элемента. Это код, который я настроил:
from selenium.common.exceptions import NoSuchElementException
while True:
try:
link = driver.find_element_by_xpath(linkAddress)
except NoSuchElementException:
time.sleep(2)
приведенный выше код не работает, в то время как следующие наивный подход:
time.sleep(2)
link = driver.find_element_by_xpath(linkAddress)
есть ли что-нибудь недостающее в приведенном выше try-кроме цикла? Я пробовал различные комбинации, включая использование времени.сон() перед try
, а не после except
.
спасибо
2 ответов
ответ на ваш конкретный вопрос:
from selenium.common.exceptions import NoSuchElementException
link = None
while not link:
try:
link = driver.find_element_by_xpath(linkAddress)
except NoSuchElementException:
time.sleep(2)
однако, есть лучший способ, чтобы ждать, пока элемент не появится на странице: ждет
другой способ может быть.
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
try:
element = WebDriverWait(driver, 2).until(
EC.presence_of_element_located((By.XPATH, linkAddress))
)
except TimeoutException as ex:
print ex.message
внутри вызова WebDriverWait поместите переменную драйвера и секунды для ожидания.