繁体   English   中英

使用Selenium API在页面超时后在python中执行函数

[英]Executing function in python after page timeout using selenium API

我有一个使用chrome webdriver利用硒的python脚本。 当我加载页面时,有时会因为某些JavaScript试图加载而卡住。 如果我运行该行:

driver.execute_script("$(window.stop())")

偶尔(但不可靠)可以模拟停止浏览器的操作。 我的另一个想法是将page_load_timeout更改为5s。 当此烦人的javascript无法加载时,将抛出错误。 我想停止页面的超时加载,然后运行我最初想要运行的功能...如何实现?

一种方法是,您必须通过检查来断言哪个元素可以产生延迟,并且使用元素的#id可以等待该元素加载超时。

try:
    WebDriverWait(driver, 60).until((EC.visibility_of_element_located(By.Id, 'id')))

except TimeoutException:
    pass

或者您可以使用staleness_of方法(在相关的SO答案中进行了解释),

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM