Я пытаюсь дождаться полной загрузки страницы с помощью 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 в собственной строке, есть проблема?