2012-11-08 34 views
1

我使用硒webdriver並試圖讓頁面對象在報告測試失敗之前多次查看頁面。我的問題是,我得到了一個錯誤,並沒有被我的開始救援塊攔截。
這裏是錯誤爲什麼我的救援模塊無法正常工作?

硒::的webdriver ::錯誤:: NoSuchElementError:無法找到元素:{ 「方法」: 「ID」, 「選擇器」: 「不存在」}

class ManageMembers < Nav 

    def initialize 
    super 
    ready = false # Used to indicate if all elements expected are present 
    tryCount = 0# A counter to track the number of attempts to 
    while(ready == false) 
     puts "initalizing managemembers" 
     #things on the side menue 
     begin 
     $driver.find_element(:id, "does not exist") 
     $driver.find_element(:id, "sidebar") 
     $driver.find_element(:id, "sidebar").find_element(:link, "Manage Members") 
     $driver.find_element(:id, "sidebar").find_element(:link, "Create Member") 
     @sidebar = true 
     rescue @sidebar = false 
     end 
+2

你能嘗試把'急救異常=> e'並把'@sidebar = FALSE'下一行? – sunnyrjuneja

+0

謝謝你的工作! – Zach

回答

1

將此添加爲答案,以便我們可以將此問題標記爲已回答。

class ManageMembers < Nav 
    def initialize 
    super 
    ready = false # Used to indicate if all elements expected are present 
    tryCount = 0# A counter to track the number of attempts to 
    while(ready == false) 
     puts "initalizing managemembers" 
     #things on the side menue 
     begin 
     $driver.find_element(:id, "does not exist") 
     $driver.find_element(:id, "sidebar") 
     $driver.find_element(:id, "sidebar").find_element(:link, "Manage Members") 
     $driver.find_element(:id, "sidebar").find_element(:link, "Create Member") 
     @sidebar = true 
     rescue Exception => e 
     @sidebar = false 
     end 
0

當您使用塊語法(begin ... rescue ... end),而不是在線語法(do_something rescue recover_from_something),你需要放置在下一行救援語句。現在你正在混合兩種語法風格。

begin 
    $driver.find_element(:id, "does not exist") 
    $driver.find_element(:id, "sidebar") 
    $driver.find_element(:id, "sidebar").find_element(:link, "Manage Members") 
    $driver.find_element(:id, "sidebar").find_element(:link, "Create Member") 
    @sidebar = true 
rescue 
    @sidebar = false 
end 

如果你拯救其整體的begin ... end塊這並不適用(使其成爲一個完整的語句),但是這看起來可怕我建議使用完整的塊語法:

begin 
    $driver.find_element(:id, "does not exist") 
    $driver.find_element(:id, "sidebar") 
    $driver.find_element(:id, "sidebar").find_element(:link, "Manage Members") 
    $driver.find_element(:id, "sidebar").find_element(:link, "Create Member") 
    @sidebar = true 
end rescue @sidebar = false 

再次,不這樣做的最後一位;)