我正在尝试等待页面完全加载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
一些东西,所以也许看起来像产量一样的原始代码有问题吗?
答案 0 :(得分:0)
我认为您可能错过了这里的预期条件。请尝试使用该代码,看看是否有帮助。
CurrentResult