与webdriver,代理,Firefox Watir

时间:2011-03-25 10:31:35

标签: firefox proxy watir webdriver

我可以在IE上使用watir-webdriver,但我更喜欢使用Firefox。 问题:我需要一个代理。 通过谷歌搜索,我发现了一些代码片段,但我无法将它们放在一起。 这是我到目前为止所做的,请让我知道我错过了什么:

require 'watir-webdriver'

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("network.proxy.http", "proxy.myplace.com");
profile.setPreference("network.proxy.http_port", 8080);
WebDriver driver = new FirefoxDriver(profile);

browser = Watir::Browser.new :firefox
browser.goto( "http://www.google.com/" )

我收到此错误消息:

I:/watir/webdriver/webdrivertest.rb:3: syntax error, unexpected tCONSTANT, expec
ting keyword_do or '{' or '('
FirefoxProfile profile = new FirefoxProfile();

另外,我不知道如何使用名为'driver'的变量

4 个答案:

答案 0 :(得分:4)

调用底层的Selenium WebDriver。

我已经使用这种技术来设置Firefox 3.6的路径,因此我可以使用Firefox 4和3.6进行测试:

Selenium::WebDriver::Firefox.path = ENV['FIREWATIRPATH']
browser = Watir::Browser.new :firefox

所以要做你想做的事情:

profile = Selenium::WebDriver::Firefox::Profile.new
proxy = Selenium::WebDriver::Proxy.new(:http => "http://proxy.org:8080")
profile.proxy = proxy

# You have to do a little more to use the specific profile
driver = Selenium::WebDriver.for :firefox, :profile => profile
browser = Watir::Browser.new(driver)

请查看:Selenium Ruby BindingsWebdriver FAQ以获取更多信息。


您对代理行有什么问题?

您可以尝试this

profile = Selenium::WebDriver::Firefox::Profile.new
profile["network.proxy.type"] = 1
profile["network.proxy.http"] = "proxy.myplace.com"
profile["network.proxy.http_port"] = 8080

我们的想法是查看您的设置:配置并在代码中复制它们。

答案 1 :(得分:3)

profile = Selenium::WebDriver::Firefox::Profile.new
profile.proxy = Selenium::WebDriver::Proxy.new :http => '12.12.12.12:8888', :ssl => '15.15.15.15:443'
browser = Watir::Browser.new :firefox, :profile => profile

答案 2 :(得分:2)

原始问题中的基本问题在错误消息

webdrivertest.rb:3: syntax error, unexpected tCONSTANT, expecting keyword_do or '{' or '('

ruby​​解释器在脚本的第三行看到的东西看起来像一个常量,在一个预期其他东西的地方。

我怀疑这是ruby期望变量名称的行的开头,并且你有一个类名。 Ruby期望以大写字母开头的变量是一个常量。这对于定义一个类很好,但不能创建一个实例,因为实例不是常量。

看起来你似乎正在尝试使用'new'关键字和其他语言进行新的调用,而不是使用.new方法对任何想要创建新对象的对象采用ruby方式。< / p>

比较他在答案中的答案中的代码

profile = Selenium::WebDriver::Firefox::Profile.new

请注意您在第3行尝试做的事情

FirefoxProfile profile = new FirefoxProfile();

看看它们有多么不同?他就是这样做的。

答案 3 :(得分:-1)

请参阅http://forum.iopus.com/viewtopic.php?t=12440#p36761

它显示了我与iMacros一起使用的代码,效果很好。我想你可以将它改编为watir。

URL GOTO=about:config
URL GOTO=javascript:var<SP>prefb<SP>=<SP>Components.classes["@mozilla.org/preferences-     service;1"].getService(Components.interfaces.nsIPrefBranch);var<SP>str<SP>= <SP>Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);str.data<SP>=<SP>"{{!COL2}}";prefb.setComplexValue("network.proxy.http",<SP>Components.interfaces.nsISupportsString,<SP>str);;