watir-webdriver 在保持浏览器打开的情况下更改代理

2024-01-23

我正在 Ruby 中使用 Watir-Webdriver 库来检查一些页面。我知道我可以使用代理通过代理连接

profile = Selenium::WebDriver::Firefox::Profile.new#create a new profile
profile.proxy = Selenium::WebDriver::Proxy.new(#create proxy data for in the profile
  :http => proxyadress,
  :ftp => nil,
  :ssl => nil,
  :no_proxy => nil
)
browser = Watir::Browser.new :firefox, :profile => profile#create a browser window with this profile
browser.goto "http://www.example.com"
browser.close

但是,当想要使用不同的代理多次连接到同一页面时,我必须为每个代理创建一个新的浏览器。加载(和卸载)浏览器需要相当长的时间。

所以,我的问题是:有没有什么方法可以使用 ruby​​ 中的 webdriver 更改 Firefox 用于连接的代理地址,同时保持浏览器打开?


如果您想测试通过代理服务器访问页面时是否被阻止,您可以通过无头库来实现。我最近使用机械化取得了成功。您或许也可以使用 net/http。

我仍然不确定为什么您需要更改当前会话的代理服务器。

require 'Mechanize'
session = Mechanize.new
session.set_proxy(host, port, user, pass)   
session.user_agent='Mac Safari'
session.agent.robots = true #observe of robots.txt rules
response = session.get(url)
puts response.code

您需要提供代理主机/端口/用户/密码(用户/密码是可选的),并且url。如果出现异常,那么response.code可能不友好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

watir-webdriver 在保持浏览器打开的情况下更改代理 的相关文章

  • 隐藏滚动条,但仍然可以滚动

    我希望能够滚动整个页面 但不显示滚动条 在谷歌浏览器中它是 webkit scrollbar display none 但 Mozilla Firefox 和 Internet Explorer 似乎不是这样工作的 我也在 CSS 中尝试过
  • 在 Firefox 中访问全局事件对象

    目标 运行一些函数 ajaxStart 但仅限于由特定事件触发时 代码 loading indicator ajaxStart function if event null if event type hashchange event ty
  • Canvas drawImage 内联 svg 在 Firefox 上不起作用

    这是一个例子 它采用 svg 并将其转换为画布 http jsfiddle net Na6X5 944 http jsfiddle net Na6X5 944 var can document getElementById canvas1
  • 默认:Rails 资源路由的排除选项

    一个小问题 我正在将 Rails 用于 REST API 但由于它是 RESTful API 所以我并不真正需要 new or edit我的任何资源的路由 因为人们只会完全通过自动 JSON 请求而不是图形方式与此 API 交互 例如 不需
  • Chef - 使用动态变量创建模板?

    我在厨师食谱上遇到了一些挑战 我是厨师新手 所以请耐心等待 第 1 步 我的厨师食谱安装 Ruby Passenger 然后与 Nginx 一起编译 Passenger nginx 模块 Install passenger and ngin
  • 通过 Selenium 和 python 切换到 iframe

    我如何在硒中切换到这个 iframe 只知道 您可以使用 XPath 来定位 iframe driver find element by xpath iframe name Dialogue Window Then switch to th
  • 覆盖 Sinatra 默认的 NotFound 错误页面

    有没有办法覆盖 sinatra 默认的 NotFound 错误页面 Sinatra 不知道这个小曲 我希望 sinatra 在未找到正确的路由时仅将纯字符串显示为 未找到方法 但是当我从路由内部引发 404 错误时 我希望它显示传入的错误消
  • Ruby 在 Windows 上找不到 sqlite3 驱动程序

    我正在尝试在 Windows 上设置 Ruby on Rails 我正在使用看起来不错的 Flash Rails 发行版 但是 sqlite3 有一个问题 我发现线程告诉我安装版本 1 2 3 安装得很好 我使用的是 ruby 1 9 0
  • 设置一个带有 JQuery 掩码的文本字段

    使用 watir webdriver 我尝试设置文本字段的值 browser text field id phoneNumbers value input set 5555551234 当我运行该命令时 我可以看到 watir 找到了该字段
  • 为什么包含此模块不会覆盖动态生成的方法?

    我试图通过包含一个模块来覆盖动态生成的方法 在下面的示例中 Ripple 关联添加了rows 方法表 我想调用该方法 但之后还要做一些额外的事情 我创建了一个模块来重写该方法 认为该模块的row 可以打电话super使用现有的方法 clas
  • 有没有办法避免自动更新 Rails 时间戳字段?

    如果您有数据库列created at and updated at当您创建和更新模型对象时 Rails 将自动设置这些值 有没有办法在不接触这些列的情况下保存模型 我正在引入一些旧数据 我想根据 不同名称的 旧数据字段中的相应值设置这些值
  • 启动同一作业的多个延迟作业进程

    我在运行多个工作人员的设置中使用延迟作业 就我的问题而言 这并不重要 但假设我运行 10 个工作线程 当前在开发模式下执行此操作 我遇到的问题是两个不同的工作人员有时开始处理同一项工作 调用我的工作对象上的执行方法 据我所知 延迟作业正在使
  • Capistrano:deploy.rb 文件重构

    我的deploy rb中有以下代码 namespace app do desc copies the configuration frile from shared config yml to config task copy config
  • RSpec 2 中使用 OR 相等

    下面这个例子的正确写法是什么 玩家的分数应等于 5 或 8 it should equal 5 or 8 do player score should 5 or 8 end Thanks Tim 5 or 8将始终产生结果 5 并且不会执行
  • Python selenium 浏览器 driver.back()

    我创建了一个小屏幕抓取工具 一切似乎都运行良好 信息正在被提取并保存在数据库中 我遇到的唯一问题是有时 Python 不使用driver back 因此它会尝试获取错误页面上的信息并崩溃 我尝试过添加一个time sleep 5 但有时它仍
  • 如何从数组中提取特定元素?

    如果我有一个数组a 1 2 3 4 5 6 7 8 9 10 我想要这个数组的一个子集 第 1 个 第 5 个和第 7 个元素 是否可以通过简单的方式从该数组中提取这些内容 我在想这样的事情 a 0 4 6 1 5 7 但这行不通 还有一种
  • 如何解决 HeadlessChrome 中的“您正在使用不受支持的命令行标志:--ignore-certificate-errors,稳定性和安全性将受到影响”

    我正在尝试在 C 中使用 selenium 运行 chrome headless 但我不断收到此错误 您正在使用不受支持的命令行标志 ignore certificate errors 稳定性和安全性将受到影响 我在用着 铬 61 Chro
  • 自动加载常量时检测到循环依赖

    我将 Rails 从版本 3 1 2 运行良好 升级到 4 0 并遇到以下错误 circular dependency detected while autoloading constant Foo 我创建了一个类ProductFactor
  • Rails 4 可安装引擎,找不到文件“jquery”

    我正在创建一个 Rails 可安装引擎插件 它使用 gem jquery rails 我在 gemspec 文件中添加了这段代码 s add dependency jquery rails gt 3 0 1 and run bundle i
  • 如何在 Ruby 中重写 require ?

    我需要覆盖require来自 Ruby 文件 这是我的 start rb 应用程序入口点 所必需的 rubygems在此之前加载 位于 start rb 中 我尝试的所有操作都出现了堆栈溢出错误 正确的做法是什么 一般来说 如果你想修补一些

随机推荐