Python Selenium time.sleep () работает неявно_wait () и WebDriverWait завершается ошибкой - PullRequest
0 голосов
/ 31 октября 2019

У меня проблема с поиском веб-элемента по идентификатору с использованием selenium и python.

Это только для одного элемента на странице, я могу найти все остальные в порядке.

Если япопробуйте использовать

driver.find_element_by_id("btUpdate").click()

find_element_by_id он генерирует

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element:

Я получу тот же результат, если я добавлю

driver.implicitly_wait(20)

Я получаю те же результаты, если использую:

WebDriverWait(driver, 20).until(
    EC.element_to_be_clickable((By.ID, id)))

Однако, если я добавлю простой time.sleep (2) перед моим find_element_by_id, он будет работать.

Почемуработает ли сон, когда другие терпят неудачу? Он будет ждать в течение 20 секунд с любой из команд ожидания и все еще не сможет найти элемент. Бросьте 2-секундный сон, и он будет в порядке.

Есть идеи?

Редактировать для получения дополнительной информации

Использование Chrome с ChromeDriver 78.0.3904.70

Да, Джефф, вы правы, что происходит сбой с другой ошибкой, когда я использую WebDriverWait, который я получаю.

selenium.common.exceptions.TimeoutException: Message: 

Я также пробовал visibility_of_element_located, но получаю то же исключение TimeoutException.

1 Ответ

0 голосов
/ 31 октября 2019

Вместо element_to_be_clickable вы можете попробовать подождать в другом состоянии - здесь может помочь visibility_of_element_located.

element = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.ID, "btUpdate")))

element.click()

Интересная проблема, странно, что implicitly_wait здесь не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...