我试图理解如何处理通过代理执行的调用挂起的情况。例如,我有这段代码:
def call_with_proxy(ip, port):
profile = FirefoxProfile()
profile.set_preference('network.proxy.type', 1)
profile.set_preference('network.proxy.socks', ip)
profile.set_preference('network.proxy.socks_port', port)
profile.update_preferences()
driver= webdriver.Firefox(profile)
driver.get("http://somewebsite.com")
代理取自https://hidemyass.com/proxy-list/
的免费代理列表有时候everythig工作,我正在收到我要求的页面。但有时我会得到一个空白的firefox页面(我可以看到网站的某些元素正在加载,例如css),这个过程会持续很长时间。例如。即使在等待10分钟后,会话仍未关闭。我想询问是否有办法,如果例如页面没有加载一段时间则自动关闭浏览器,或者例如我正在执行的测试停止执行(由于某些与代理相关的原因)
答案 0 :(得分:0)
在java中我们有:
webDriver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
来自doc:
pageLoadTimeout
WebDriver.Timeouts pageLoadTimeout(很长一段时间, java.util.concurrent.TimeUnit unit)
设置之前等待页面加载完成的时间 抛出一个错误。如果超时为负,则可以加载页面 无限期的。
参数: time - 超时值。 unit - 时间单位。返回: 超时界面。
快速Google搜索显示:
webDriver.set_page_load_timeout(30)
用于Python。请在try-catch
(或您的情况下为try-except
)中尝试此操作
答案 1 :(得分:0)
使用队列或其他活动运行时对象(即/ weblistener)实现心跳系统。如果您知道整个站点脚本的最大运行时间,则可以使用类似SE-Grid的功能。
如果您在网站上有可变的时间,并且只担心初始加载时间,那么心跳系统是我能想到的唯一方式。