Использование явных ожиданий в Selenium / Python - PullRequest
0 голосов
/ 05 октября 2019

Я пытался использовать явные ожидания перед щелчком некоторых веб-элементов.

Я считаю, что WebDriverWait не ожидает полной задержки перед выдачей исключения. Он пропускает переходы к исключению: немедленно.

        try:
            saveLink = "//*[@id='top-level-buttons']/ytd-button-renderer[2]/a"
            save_present = EC.presence_to_be_clickable((By.XPATH,saveLink))
            WebDriverWait(driver,5).until(save_present)
            button = driver.find_element_by_xpath(saveLink)
            ActionChains(driver).move_to_element(button).click(button).perform()
        except:
            print("Timed out save link")   

У меня также возникают проблемы с send_key (), когда он не завершает отправку, прежде чем продолжить.

Ответы [ 2 ]

1 голос
/ 05 октября 2019

Я бы добавил это:

from selenium.common.exceptions import TimeoutException

и изменил except: на except: TimeOutException

Таким образом, вы можете поймать исключение, которое происходит, когдаСрок действия WebDriverWait истек. Если это другое исключение, тогда мы сможем сообщить.

Также вы можете изменить presence_to_be_clickable на element_to_be_clickable, так как я не думаю, что ваш текущий вариант действителен.

Также возможно, что локатор ссылок недействителен, и в этом случае размещение страницы HTML поможет сузить эту проблему.

1 голос
/ 05 октября 2019

Перехватывая все исключения, кроме просто ошибок тайм-аута, вы не будете знать, возникают ли другие исключения. Если вы явно обнаружите только ошибку тайм-аута и / или зарегистрируете пойманную исключительную ситуацию, вы увидите, что происходит.

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