2013-12-18 57 views
0

我有一個小任務來創建ruby + webdriver測試腳本。但我只能使用ruby和webdriver。你能否給我一些建議,告訴我如何在沒有Rspec或測試單元的情況下做到這一點? 另外我需要使用一些OOP模型來測試。Ruby Selenium Webdriver測試腳本(需要諮詢)

有如下要求:

測試用例

  1. 運行瀏覽器
  2. 清除瀏覽器的cookies
  3. 前往網站
  4. 點擊 「查找」
  5. 關鍵字輸入到搜索字段並提交表格
  6. 使用搜索結果解析第一頁:在搜索結果的第一頁上給出的商店信息作爲您鍵入的所選結構化數據(即,哈希散列或散列數組,無論需要解析哪些結構)。
  7. 確保解析搜索結果中每個項目的至少一個屬性(標題,目標,技能等)包含關鍵字。登錄標準輸出哪些自由職業者和屬性包含關鍵字,哪些不包含。
  8. 點擊隨機自由職業者的稱號
  9. 進入該自由職業者的個人資料
  10. 檢查每個屬性值等於那些存儲在#創建6
  11. 檢查結構的一個至少一個屬性是否包含關鍵字

要求:

  1. 瀏覽器和關鍵字應該是可配置的。測試應該以它們的任意組合運行。
  2. 想象一下,這不是一個簡單的小任務,而是一個可擴展的大型可擴展項目。因此,實施適當的OOP模型/方法。
  3. 選擇證明模型/方法。
  4. 應該記錄每個動作,每個比較結果等(即stdout)。目標:當您的腳本通過時 - 詳細的測試用例步驟應該嵌入到STDOUT中,因此任何人都可以閱讀並重復完全相同的步驟和驗證,但需要手動完成。
  5. 代碼應該很好地評論,所以任何人都可以很容易地找出正在執行的操作以及這些代碼塊/方法/等的目的是什麼。

目前我已經完成1-5步,並堅持了6步。我需要用哈希散列保存用戶數據,然後才能執行下一步。

# encoding: utf-8 
require "selenium-webdriver" 
require "test/unit" 

class Tests < Test::Unit::TestCase 

    def setup 
    @keyword = "qa tester" 
    @driver = Selenium::WebDriver.for :firefox 
    @base_url = "https://www.odesk.com" 
    @driver.manage.timeouts.implicit_wait = 30 

    end 

    def teardown 
    @driver.quit 

    end 

    def element_present?(how, what) 
    @driver.find_element(how, what) 
    true 
    rescue Selenium::WebDriver::Error::NoSuchElementError 
    false 
    end 

    def test_1 

    @driver.get(@base_url + "/") 
    @driver.find_element(:link, "Hire Freelancers").click 
    @driver.find_element(:name, "q").clear 
    @driver.find_element(:name, "q").send_keys @keyword 
    @driver.find_element(:css, "input.oSearchSubmit").click 


    end 

end 
+0

歡迎來到SO。雖然你的問題非常詳細,但它也非常廣泛,缺少顯示你所嘗試的代碼。我建議看看[SO問題指南](http://stackoverflow.com/questions/how-to-ask)。你會以這種方式獲得更好的迴應。除此之外,我會深入研究Selenium文檔(甚至可以看一下[watir-webdriver](http://watirwebdriver.com))。 – orde

回答

0

正如orde提到的,你的問題是相當廣泛的,但你至少可以得到你的步驟#6開始通過修改「TEST_1」方法,像這樣來分析搜索結果的無序列表:

def test_1 
    @driver.get(@base_url + "/") 
    @driver.find_element(:link, "Hire Freelancers").click 
    @driver.find_element(:name, "q").clear 
    @driver.find_element(:name, "q").send_keys @keyword 
    @driver.find_element(:css, "input.oSearchSubmit").click 
    results_list = @driver.find_element(:xpath, "//ul[@class='oSearchResultsList']") 
    individual_results = results_list.find_elements(:xpath, "//li[@class='oSearchResultItem']") 
    individual_results.each do 
    # do some parsing of each search result here 
    end 
end 

此時,您只需決定要提取哪些特定數據元素並將其填充到散列(或您選擇的任何數據結構)中。