2012-06-22 15 views
9

Próbowałem uruchomić podstawowe testy automatyczne za pomocą programu webowego ruby ​​selen. Ten sam kod działa doskonale na moim komputerze domowym, ale kończy się niepowodzeniem na moim komputerze pracującym, który znajduje się za serwerem proxy (który nie wymaga uwierzytelniania).Nie można połączyć się z przeglądarką za pomocą programu webowego ruby ​​selenowej

driver = Selen :: WebDriver.for: Firefox: profil => 'default'

Błąd pojawia się:

C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.24.0/lib/selenium/webdriver/remote/http/common.rb:66:in `create_response': unexpected response, code= 
403, content-type="text/html" (Selenium::WebDriver::Error::WebDriverError) 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> 
<TITLE>ERROR: The requested URL could not be retrieved</TITLE> 
<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE> 
</HEAD><BODY> 
<H1>ERROR</H1> 
<H2>The requested URL could not be retrieved</H2> 
<HR noshade size="1px"> 
<P> 
While trying to retrieve the URL: 
<A HREF="http://127.0.0.1:7055/hub/session">http://127.0.0.1:7055/hub/session</A> 
<P> 
The following error was encountered: 
<UL> 
<LI> 
<STRONG> 
Access Denied. 
</STRONG> 
<P> 
Access control configuration prevents your request from 
being allowed at this time. Please contact your service provider if 
you feel this is incorrect. 
</UL> 

Przeglądarka otwiera właściwego profilu, ale wynikające zmiennej sterownika jest zerowe. Próbowałem nawet ręcznie ustawić proxy na profilu bez powodzenia.

Wszelkie pomysły?

Odpowiedz

16

Prawdopodobnie w środowisku jest ustawione ustawienie HTTP_PROXY (lub http_proxy). Kolejne wydanie selenu-webdrivera (2.25) będzie również honorować NO_PROXY/no_proxy (które możesz wtedy ustawić na NO_PROXY = 127.0.0.1). Do tego czasu można usunąć proxy ze środowiska Ruby przed uruchomieniem przeglądarki:

ENV['HTTP_PROXY'] = ENV['http_proxy'] = nil 
driver = Selenium::WebDriver.for :firefox 

Jeśli potrzebujesz proxy skonfigurowane dla Firefoksa do komunikowania się ze światem zewnętrznym, można spróbować coś takiego:

proxy = Selenium::WebDriver::Proxy.new(:http => ENV['HTTP_PROXY'] || ENV['http_proxy']) 
ENV['HTTP_PROXY'] = ENV['http_proxy'] = nil 
driver = Selenium::WebDriver.for :firefox, :proxy => proxy 
+0

mi selen-webdriver 2.26.0, ustawienie no_proxy = 127.0.0.1 rozwiązać ten problem. –

+0

Wow, to faktycznie zadziałało dla mnie. –

3

Użycie selenu-webvovera za proxy ma specyficzne dla przeglądarki. Krótko mówiąc, musisz znaleźć sposób przekazywania ustawień proxy do instancji przeglądarki utworzonej przez webdriver.

Poniżej znajduje się kod współpracujący z Firefoksem.

#Firefox keeps proxy settings in profile. 
profile = Selenium::WebDriver::Firefox::Profile.new 
profile.proxy = Selenium::WebDriver::Proxy.new(:http => "192.168.1.1:3128") 
driver = Selenium::WebDriver.for :firefox, :profile => profile 

driver.navigate.to "http://google.com" 
puts driver.title 
driver.quit 
-1
require 'rubygems' 
require 'selenium-webdriver' 
ENV['NO_PROXY']="127.0.0.1" 
driver = Selenium::WebDriver.for :firefox 
driver.get "http://google.com" 
+4

Witamy w StackOverflow! Może możesz dodać tekst, aby wyjaśnić swoją odpowiedź?! – franssu

Powiązane problemy