Страница Selenium WebDriverWait загрузить как написать заявление о выходе - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь дождаться полной загрузки страницы с помощью Selenium, и попытался использовать код из других ответов здесь: https://stackoverflow.com/a/30385843/8165689 3-й метод в этом ответе с использованием свойства staleness_of в Selenium, и первоначально по адресу: http://www.obeythetestinggoat.com/how-to-get-selenium-to-wait-for-page-load-after-a-click.html

Однако, я думаю, у меня есть некоторые проблемы с ключевым словом Python yield специально в этом коде.Исходя из вышеизложенного, у меня есть метод:

@contextmanager
def wait_for_page_load(driver, timeout = 30):
    old_page = driver.find_element_by_tag_name('html')
    yield WebDriverWait(driver, timeout).until(staleness_of(old_page))

Это не вызывается Python, точка останова показывает, что он пропущен.У меня также есть та же проблема с очевидным исходным кодом:

@contextmanager
def wait_for_page_load(driver, timeout = 30):
    old_page = driver.find_element_by_tag_name('html') # up to here with decorator, the function is called OK, with 'yield' it is NOT called
    yield
    WebDriverWait(driver, timeout).until(staleness_of(old_page))

Но если я удаляю оператор yield и далее, эта функция по крайней мере вызывается:

@contextmanager
def wait_for_page_load(driver, timeout = 30):
    old_page = driver.find_element_by_tag_name('html')

Кто-нибудь знает, как яследует написать заявление о доходности?У меня нет опыта с yield, но похоже, что Python должен yield что-то , поэтому, возможно, у оригинального кода, который, похоже, выдает yield в собственной строке, есть проблема?

1 Ответ

0 голосов
/ 14 февраля 2019

Я думаю, что вы могли пропустить ожидаемые условия здесь. Пожалуйста, попробуйте этот код, посмотрите, поможет ли это.

from selenium.webdriver.support import expected_conditions as EC
def wait_for_page_load(driver, timeout = 30):
    old_page = driver.find_element_by_tag_name('html') 
    yield WebDriverWait(driver, timeout).until(EC.staleness_of(old_page))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...