在Selenium webdriver.PhantomJS上设置超时。[英] Setting timeout on selenium webdriver.PhantomJS

问题描述

情况

我有一个简单的 python 脚本来获取给定 url 的 HTML 源代码:

    browser = webdriver.PhantomJS()
    browser.get(url)
    content = browser.page_source

有时,该 url 指向外部资源加载缓慢的页面(例如视频文件或非常慢的广告内容).

Webdriver 在完成 .get(url) 请求之前将等待这些资源加载完毕.

注意:由于无关的原因,我需要使用 PhantomJS 而不是 requests 或 urllib2

<小时>

问题

我想为 PhantomJS 资源加载设置一个超时时间,这样如果资源加载时间过长,浏览器就会认为它不存在或其他什么.

这将允许我根据浏览器加载的内容执行后续 .pagesource 查询.

文档 关于webdriver.PhantomJS 很瘦,在SO 上也没找到类似的问题.

提前致谢!

推荐答案

PhantomJS 提供了 resourceTimeout,可能适合你的需求.我引用文档 here

<块引用>

(以毫秒为单位)定义请求任何资源的超时时间将停止尝试并继续处理页面的其他部分.onResourceTimeout 回调将在超时时调用.

所以在 Ruby 中,你可以做类似的事情

require 'selenium-webdriver'

capabilities = Selenium::WebDriver::Remote::Capabilities.phantomjs("phantomjs.page.settings.resourceTimeout" => "5000")
driver = Selenium::WebDriver.for :phantomjs, :desired_capabilities => capabilities

我相信 Python,它有点像(未经测试,只提供逻辑,你是 Python 开发者,希望你能弄清楚)

driver = webdriver.PhantomJS(desired_capabilities={'phantomjs.page.settings.resourceTimeout': '5000'})

本文地址:https://www.itbaoku.cn/post/1739865.html