2010-08-30 8 views
12

Hice algunas pruebas con el Selenio de Firefox y luego lo exporté a Ruby. Aunque todas las pruebas funcionaron bien en Firefox, estoy teniendo problemas para ejecutar la misma suite en Ruby.¿Cómo uso el selenio con Ruby?

He intentado ejecutar uno de los programas de ejemplo que tienen y también recibo el mismo error de conexión rechazada. Este es el error que obtuve al intentar ejecutar su suite google_test.

tellingsen$ ruby google_test.rb 
Loaded suite google_test 
Started 
E 
Finished in 0.001558 seconds. 

    1) Error: 
test_page_search(ExampleTest): 
Errno::ECONNREFUSED: Connection refused - connect(2) 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:560:in `initialize' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:560:in `open' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:560:in `connect' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/timeout.rb:62:in `timeout' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/timeout.rb:93:in `timeout' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:560:in `connect' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:553:in `do_start' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:542:in `start' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:1035:in `request' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:845:in `post' 
    /Users/tellingsen/.gem/ruby/1.8/gems/selenium-client-1.2.18/lib/selenium/client/protocol.rb:89:in `http_post' 
    /Users/tellingsen/.gem/ruby/1.8/gems/selenium-client-1.2.18/lib/selenium/client/protocol.rb:12:in `remote_control_command' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/timeout.rb:62:in `timeout' 
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/timeout.rb:93:in `timeout' 
    /Users/tellingsen/.gem/ruby/1.8/gems/selenium-client-1.2.18/lib/selenium/client/protocol.rb:11:in `remote_control_command' 
    /Users/tellingsen/.gem/ruby/1.8/gems/selenium-client-1.2.18/lib/selenium/client/protocol.rb:19:in `string_command' 
    /Users/tellingsen/.gem/ruby/1.8/gems/selenium-client-1.2.18/lib/selenium/client/base.rb:85:in `start_new_browser_session' 
    google_test.rb:21:in `setup' 

1 tests, 0 assertions, 0 failures, 1 errors 

¿Alguien me puede ayudar con esto?

Nota:

  • Mac OS: 10.6.4
  • Macbook Pro
  • Ruby: 1.8.7
  • joya: el selenio-cliente 1.2.18

EDITAR Aquí está el google_test.rb que probé

#!/usr/bin/env ruby 
# 
# Sample Test:Unit based test case using the selenium-client API 
# 
require "test/unit" 
require "rubygems" 
gem "selenium-client", ">=1.2.18" 
require "selenium/client" 

class ExampleTest < Test::Unit::TestCase 
    attr_reader :browser 

    def setup 
    @browser = Selenium::Client::Driver.new \ 
     :host => "localhost", 
     :port => 4444, 
     :browser => "*firefox", 
     :url => "http://www.google.com", 
     :timeout_in_second => 60 

    browser.start_new_browser_session 
    end 

    def teardown 
    browser.close_current_browser_session 
    end 

    def test_page_search 
     browser.open "/" 
     assert_equal "Google", browser.title 
     browser.type "q", "Selenium seleniumhq" 
     browser.click "btnG", :wait_for => :page 
     assert_equal "Selenium seleniumhq - Google Search", browser.title 
     assert_equal "Selenium seleniumhq", browser.field("q") 
     assert browser.text?("seleniumhq.org") 
     assert browser.element?("link=Cached") 
    end 

end 
+0

¿Podemos ver cómo es su prueba? – AutomatedTester

+0

He editado la publicación para que contenga el código que traté de ejecutar – TrentEllingsen

Respuesta

15

Lo descubrí después de unas horas de búsqueda en foros y a través de google.

Lo que tenía que hacer era tener el servidor de selenio funcionando para que funcione. Pude descargarlo de este sitio http://seleniumhq.org/download/ (actual: Selenium RC 23 de febrero de 2010 1.0.3).

partir de ahí me abrió una nueva terminal e hicieron

cd Downloads/selenium-remote-control-1.0.3/selenium-server-1.0.3 
java -jar selenium-server.jar 

luego corrió mi rubí script generado con otra ventana de terminal

ruby google_test.rb 

y funcionó!

+1

gracias por publicar la solución. – suvankar

8

Ésta es Selenio WebDriver ejemplo para simple búsqueda en Google Guardar como google_search.rb

require "selenium-webdriver" 
require "test/unit" 

class GoogleSearch < Test::Unit::TestCase 
    def setup 
    @driver = Selenium::WebDriver.for :firefox 
    @base_url = "http://www.google.com/" 
    @driver.manage.timeouts.implicit_wait = 30 
    @verification_errors = [] 
    end 
    def teardown 
    @driver.quit 
    assert_equal [], @verification_errors 
    end 
    def test_google_search 
    @driver.get(@base_url) 
    @driver.find_element(:name, "q").clear 
    @driver.find_element(:name, "q").send_keys "Thiyagarajan Veluchamy" 
    @driver.find_element(:name, "btnK").click 
    end 
    def element_present?(how, what) 
    @driver.find_element(how, what) 
    true 
    rescue Selenium::WebDriver::Error::NoSuchElementError 
    false 
    end 
    def verify(&blk) 
    yield 
    rescue Test::Unit::AssertionFailedError => ex 
    @verification_errors << ex 
    end 
end 

$ rubí google_search.rb

+0

Great post. Se marcó como una referencia para una plantilla básica para Ruby WebDriver. – emery

-1

Aquí es una versión más simple de la escritura:

require "selenium-webdriver" 

@driver = Selenium::WebDriver.for :chrome 
@base_url = "http://www.google.com/" 

@driver.get(@base_url) 
@driver.find_element(:name, "q").send_keys "Stack Overflow" 

Los métodos disponibles en el objeto @driver se pueden encontrar aquí: http://selenium.googlecode.com/svn/trunk/docs/api/rb/Selenium/WebDriver/Driver.html

find_element le da acceso a la clase Element. Los métodos disponibles en la clase Elemento se pueden encontrar aquí: http://selenium.googlecode.com/svn/trunk/docs/api/rb/Selenium/WebDriver/Element.html

Cuestiones relacionadas