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 поместите переменную драйвера и секунды для ожидания.