繁体   English   中英

在Selenium Python绑定中设置页面加载超时

[英]Setting page load timeout in Selenium Python binding

我正在使用带有Selenium模块的Python编写机器人。当我用我的机器人打开一个网页时,由于网页包含的内容太多而不是dom,所以加载所有页面需要花费很多。 我使用显式和隐式等待来消除这个问题,因为我只想加载一个特定的元素而不是所有的网页,它不起作用。 问题是如果我运行以下语句:

driver = webdriver.Firefox()
driver.get('somewebpage')
elm = WebDriverWait(driver, 5).until(ExpectedConditions.presence_of_element_located((By.ID, 'someelementID'))


elm.click()

它不起作用,因为Selenium等待driver.get()完全检索网页,然后,它继续前进。 现在我想编写一个为driver.get()设置超时的代码,如:

driver.get('somewebpage').timeout(5)

其中driver.get()在5秒后停止加载页面并且程序流程继续进行,无论driver.get()是否已完全加载网页。

顺便说一下,我搜索了上面说过的功能,并且在那里找到了:

Selenium WebDriver无需等待页面加载即可转到页面

但问题是上面链接中的答案没有说明Python等效代码。

我如何实现我正在寻找的未来?

当前问题中提到的问题的python等效代码( Selenium WebDriver转到页面而不等待页面加载 ):

from selenium import webdriver

profile = webdriver.FirefoxProfile()
profile.set_preference('webdriver.load.strategy', 'unstable')
driver = webdriver.Firefox(profile)

和:

driver.set_page_load_timeout(5)

关于这一点有很多问题,这是一个例子 这是一个等待所有jquery ajax调用完成或5秒超时的示例。

from selenium.webdriver.support.ui import WebDriverWait

WebDriverWait(driver, 5).until(lambda s: s.execute_script("return jQuery.active == 0"))

这是一个非常繁琐的问题需要解决。 我只是做了以下,问题得到了解决:

driver= webdriver.Firefox()
driver.set_page_load_timeout(5)
driver.get('somewebpage')

它适用于我使用Firefox驱动程序(以及Chrome驱动程序)。

暂无
暂无

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

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