2010-08-30 72 views
12

我用Firefox Selenium做了一些測試,然後將它導出到Ruby。儘管測試在Firefox中運行良好,但我在Ruby中運行相同的套件時遇到了問題。我如何在Ruby中使用硒?

我試圖運行他們有的示例程序之一,我也得到了同樣的連接拒絕錯誤。這是我嘗試運行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 

有人可以幫助我嗎?

注:

  • 的Mac OS:10.6.4
  • 的MacBook Pro
  • 紅寶石:1.8.7
  • 寶石:硒客戶端1.2.18

編輯 這是我試過的google_test.rb

#!/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

我們可以看到你的測試看起來像什麼嗎? – AutomatedTester 2010-08-30 19:05:01

+0

我編輯帖子以包含我試圖運行的代碼 – TrentEllingsen 2010-08-30 19:12:19

回答

15

我在論壇上搜索了幾個小時並通過谷歌找到了它。

我需要做的是讓硒服務器運行它。我能夠從這個網站下載http://seleniumhq.org/download/(當前:Selenium RC 2010年2月23日1.0.3)。

從那裏我打開了一個新的終端,做

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

然後跑到我的紅寶石生成的腳本與另一個終端窗口

ruby google_test.rb 

和它的工作!

+1

感謝您發佈解決方案.. – suvankar 2012-05-16 08:37:39

8

這是硒的webdriver例如,對於簡單的谷歌搜索 另存爲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 

$紅寶石google_search.rb

+0

偉大的職位。將其作爲Ruby WebDriver基本模板的參考進行了書籤。 – emery 2015-04-24 21:12:52

-1

這裏是腳本的一個更簡單的版本:

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" 

@driver對象上的可用方法可在此處找到:http://selenium.googlecode.com/svn/trunk/docs/api/rb/Selenium/WebDriver/Driver.html

find_element可讓您訪問Element類。可以在這裏找到Element類的方法: http://selenium.googlecode.com/svn/trunk/docs/api/rb/Selenium/WebDriver/Element.html