Selenium WebDriverWait页面加载如何写yield语句

时间:2019-02-14 17:53:15

标签: python selenium yield webdriverwait

我正在尝试等待页面完全加载Selenium,并尝试在此处使用其他答案中的代码:https://stackoverflow.com/a/30385843/8165689此答案中的第三种方法使用Selenium的'staleness_of'属性,并且最初位于:{{ 3}}

但是,我认为这段代码中的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声明吗?我没有yield的经验,但是看起来Python必须yield 一些东西,所以也许看起来像产量一样的原始代码有问题吗?

1 个答案:

答案 0 :(得分:0)

我认为您可能错过了这里的预期条件。请尝试使用该代码,看看是否有帮助。

CurrentResult