3

我正在尝试在 selenium webdriver (2.25) 的 ruby​​ (1.8.7) 脚本中使用 PhantomJS 1.9.1 配置代理。

我看到了几个使用 Firefox 的例子,我用这个浏览器成功地做到了。我使用了这段代码:

profile = Selenium::WebDriver::Firefox::Profile.new
    profile.proxy = Selenium::WebDriver::Proxy.new :ssl => 'chronos.landebitel.local:3128'
    $browser = Watir::Browser.new :firefox, :profile => profile

但我找不到 phantomjs 的任何示例。我搜索并尝试了许多解决方案,但没有一个有效。

有人可以给我一个例子来帮助我吗?

4

5 回答 5

7

尝试:

Watir::Browser.new( :phantomjs,
    args: '--proxy=localhost:8181'
)
于 2013-07-22T18:23:58.510 回答
6

除了将代理传递给 phantomjs 之外,如果代理需要身份验证,您还可以传递用户名和密码。只需将所需的选项作为字符串数组传递。

值得注意的是,phantomjs 以这种方式支持代理身份验证,而 chromedriver 不支持(无论如何,截至 2013 年 7 月);它要求您在交互式 UI 中输入身份验证。

switches = ['--proxy=69.106.88.7:60199', '--proxy-auth=username:password123']
browser = Watir::Browser.new :phantomjs, :args => switches
于 2013-07-25T20:32:49.673 回答
1

如果您看到此警告WARN Selenium [DEPRECATION] :args is deprecated. Pass switches using driver_opts,则您仍处于旧版本。在args: proxy_arguments新版本中已弃用。

这就是你需要的

Watir::Browser.new :phantomjs, driver_opts: { args: proxy_arguments }
于 2017-09-22T10:20:37.920 回答
1

经过多年的搜索(真的)

args = ['--ssl-protocol=tlsv1', "--proxy=ip:port", '--proxy-auth=username:password']
capabilities = Selenium::WebDriver::Remote::Capabilities.phantomjs("phantomjs.page.settings.userAgent" => "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36")
driver = Selenium::WebDriver.for :phantomjs, :desired_capabilities => capabilities, :args => args
@browser = ::Watir::Browser.new driver
于 2017-05-15T00:09:42.847 回答
0

感谢您的回答。我刚从假期回来,我的问题现在已经解决了。

我使用以下选项启动 PhantomJS:

phantomjs --webdriver=777 --proxy=serveur_proxy:8080 --proxy-auth=user:password --proxy-type=http 

在我的终端和这一行:

$browser = Watir::Browser.new(:remote, :url => "http://localhost:777")

在我的脚本中,它的工作

于 2013-07-31T09:32:36.533 回答