2013-06-27 40 views
3

我试图在selenium webdriver(2.25)的红宝石(1.8.7)脚本中使用PhantomJS 1.9.1配置代理。在硒webdriver中使用phantomjs的代理

我看到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的例子。我搜索并尝试了很多解决方案,但都没有成功。

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

Sorrry英文错误。

回答

6

尝试:

Watir::Browser.new(:phantomjs, 
    args: '--proxy=localhost:8181' 
) 
+0

似乎为我工作的唯一解决方案,谢谢。 – sidney

+0

使用driver_opts的新版本更新phantomjs替换参数 – ThienSuBS

6

除了代理传递给phantomjs你也可以通过用户名和密码。如果代理需要身份验证。只需将所需选项作为字符串数组传递即可。

这样值得注意的是phantomjs支持代理认证,并且chromedriver没有(反正到2013年7月);它要求您在交互式用户界面中输入身份验证。

switches = ['--proxy=69.106.88.7:60199', '--proxy-auth=username:password123'] 
browser = Watir::Browser.new :phantomjs, :args => switches 
+0

将参数替换为driver_opts – ThienSuBS

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") 
在我的脚本

,它的工作

+0

--webdriver指定要侦听的端口。如果端口号不足1024,则需要升级权限才能启动phantomjs。所以我推荐一个高于1024的端口号。 –

0

经过多年的探求(真的)

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 
1

如果你看到这个警告WARN Selenium [DEPRECATION] :args is deprecated. Pass switches using driver_opts,你仍然在旧版本。新版本中已弃用args: proxy_arguments

这就是你需要

Watir::Browser.new :phantomjs, driver_opts: { args: proxy_arguments }