2010-08-30 16 views
12

मैंने फ़ायरफ़ॉक्स सेलेनियम के साथ कुछ परीक्षण किए और फिर इसे रूबी को निर्यात किया था। हालांकि परीक्षण फ़ायरफ़ॉक्स में ठीक से चल रहे थे, मुझे रुबी में एक ही सूट चलाने में परेशानी हो रही है।मैं रूबी के साथ सेलेनियम का उपयोग कैसे करूं?

मैंने उनके उदाहरण प्रोग्रामों में से एक को चलाने की कोशिश की और मुझे भी वही कनेक्शन त्रुटि से इनकार कर दिया गया। यहां 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 

क्या कोई इस से मेरी सहायता कर सकता है?

नोट:

  • मैक ओएस: 10.6.4
  • मैकबुक प्रो
  • रूबी: 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

+0

मैंने पोस्ट को संपादित करने के लिए पोस्ट को संपादित किया है जिसे मैंने – TrentEllingsen

उत्तर

15

मैंने फ़ोरम पर और Google के माध्यम से खोज के कुछ घंटों के बाद इसे समझ लिया।

मुझे क्या करने की आवश्यकता थी, इसके लिए सेलेनियम सर्वर चल रहा था। मैं इसे इस साइट से डाउनलोड करने में सक्षम था http://seleniumhq.org/download/ (वर्तमान: सेलेनियम आरसी फरवरी 23, 2010 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

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

ग्रेट पोस्ट। रुबी वेबड्राइवर के लिए मूल टेम्पलेट के संदर्भ के रूप में इसे बुकमार्क किया गया। – emery

-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" 

@ ड्रिवर ऑब्जेक्ट पर उपलब्ध विधियां यहां मिल सकती हैं: http://selenium.googlecode.com/svn/trunk/docs/api/rb/Selenium/WebDriver/Driver.html

find_element आपको एलिमेंट क्लास तक पहुंच प्रदान करता है। एलिमेंट क्लास पर उपलब्ध विधियां यहां मिल सकती हैं: http://selenium.googlecode.com/svn/trunk/docs/api/rb/Selenium/WebDriver/Element.html

संबंधित मुद्दे