No se puede conectar con el navegador usando ruby ​​selenium webdriver

Intenté realizar algunas pruebas automatizadas básicas utilizando webdriver de ruby ​​selenium. El mismo código funciona perfectamente en la computadora de mi casa, pero falla en la computadora de mi trabajo que está detrás de un proxy (que no requiere autenticación).

driver = Selenium :: WebDriver.for: firefox,: profile => ‘default’

El error que recibo es:

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)   ERROR: The requested URL could not be retrieved   

ERROR

The requested URL could not be retrieved


While trying to retrieve the URL: http://127.0.0.1:7055/hub/session

The following error was encountered:

  • Access Denied.

    Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect.

El navegador se abre con el perfil correcto, pero la variable del controlador resultante es nula. Incluso intenté configurar manualmente el proxy en el perfil sin suerte.

Algunas ideas ?

Probablemente tenga HTTP_PROXY (o http_proxy) configurado en su entorno. La próxima versión de Selenium-webdriver (2.25) también respetará NO_PROXY / no_proxy (que luego puede establecer en NO_PROXY = 127.0.0.1). Hasta entonces puede eliminar el proxy del entorno de Ruby antes de iniciar el navegador:

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

Si necesita que el proxy esté configurado para que Firefox se comunique con el mundo exterior, podría intentar algo como esto:

 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 

El uso de Selenium-webdriver detrás del proxy tiene características específicas relacionadas con el navegador. En resumen, debe encontrar una forma de pasar la configuración del proxy a la instancia del navegador creada por webdriver.

A continuación se muestra un código que funciona con Firefox.

 #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 
 require 'rubygems' require 'selenium-webdriver' ENV['NO_PROXY']="127.0.0.1" driver = Selenium::WebDriver.for :firefox driver.get "http://google.com"