![](/img/trans.png)
[英]selenium python set_page_load_timeout Message: Not a Number
[英]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.