Watir с веб-драйвером, прокси, Firefox - PullRequest
0 голосов
/ 25 марта 2011

Я могу использовать watir-webdriver с IE, но я бы предпочел использовать 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();

Кроме того, я не знаю какиспользовать переменную под названием «драйвер»

Ответы [ 4 ]

4 голосов
/ 25 марта 2011

Позвоните в базовый 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)

Посмотрите: Селиновые рубиновые привязки и FAQ по веб-драйверам для получения дополнительной информации.


Какие у вас проблемы с прокси-линией?

Вы можете попробовать это :

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

Идея состоит в том, чтобы увидеть, в чем ваши настройки: конфигурировать и дублировать их в коде.

3 голосов
/ 09 января 2014
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 голосов
/ 25 марта 2011

Основная проблема в вашем исходном вопросе прямо в сообщении об ошибке

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

Интерпретатор ruby ​​видит в третьей строке вашего скрипта что-то похожее на константу, в месте, где он ожидает чего-то другого.

Я подозреваю, что это начало строки, где ruby ​​ожидает имя переменной, и у вас есть имя класса. Ruby ожидает, что переменные, начинающиеся с заглавной буквы, будут константой. это хорошо для определения класса, но не для создания экземпляра класса, поскольку экземпляр не будет константой.

Выглядит так, как будто вы пытаетесь выполнить новый вызов, используя ключевое слово 'new' на каком-то другом языке, вместо того, чтобы использовать метод .new для любого объекта, из которого вы хотите создать новый, рубиновым способом.

Сравните код в ответе Майка, где он делает

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

стихи о том, что вы пытались сделать в строке 3

FirefoxProfile profile = new FirefoxProfile();

Видите, как они отличаются? Его способ сделать это.

0 голосов
/ 25 марта 2011

См. 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);;
...