Selenium Python - дождитесь загрузки элемента и нажмите на него - PullRequest
1 голос
/ 31 мая 2019

Я пытался выяснить, как дождаться загрузки элемента и затем выполнить функцию щелчка в python.

Сайт, о котором я говорю, это: https://tempail.com/

Как только я получил электронное письмо, я хочу, чтобы скрипт щелкнул по нему и затем выполнил дальнейшие задачи.

Я пытался решить эту проблему с помощью «Try / Except Function», но я всегда получаю сообщения об ошибках.

Источник сайта: https://i.imgur.com/xMrJg5J.png

Проблема в том, что сайт использует сгенерированные идентификаторы, которые я не могу использовать в функции find_element_by.

Это то, что я пробовал до сих пор: https://i.imgur.com/zxGMVpf.png

При попытке я хотел, чтобы скрипт ждал, пока сайт не получит почту. Как только письмо попадет в папку «Входящие», оно должно щелкнуть ссылку / письмо и открыть его.

Кроме того, я искал другие решения, но ничего не помогло, но с этим кодом я всегда получаю следующую ошибку:

Message: no such element: Unable to locate element: {"method":"css selector","selector":".epostalar ul li.mail a"}

Плюс он даже не ждет почты.

1 Ответ

0 голосов
/ 31 мая 2019

Как только вы получите электронное письмо, чтобы вызвать на него click(), вы должны заставить WebDriverWait сделать элемент кликабельным , и вы можете использовать любой из следующий Стратегии локатора :

  • Использование CSS_SELECTOR:

    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "ul.mailler li.mail a"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//ul[@class='mailler']//li[contains(@class, 'mail')]//a"))).click()
    
...