2013-03-21 228 views
10

我喜歡讓事情幹浪費時間,這就是爲什麼我想在我的一個步驟如下:檢查是否存在一個元素沒有水豚

if first(:css, "#blabla") != nil 
    find_by_id(blabla).click 
end 
find_by_id(....) 
.... 

這意味着,它會尋找一個某些元素,如果它存在,它會點擊它。如果沒有,我不會失去時間(我的默認等待時間是20秒,如果我把find,而不是first那裏,將使用它。

主要問題是,我不想失去時間檢查在這種情況下,某一個元素,但我也想知道如果這是一個不錯的辦法。

回答

19

我看你的代碼做不必要的第二次查詢到瀏覽器的問題(你已經有first(:css, "#blabla")所以沒必要做find_by_id(blabla)

我建議你使用一個查詢來查找元素:

el = first('#blabla') 
el.click unless el.nil? 

請注意,這裏沒有損失時間,因爲first不會阻止。

但是,first不檢查頁面上沒有其他元素。您可以添加:maximum來檢查它:

el = first('#blabla', maximum: 1) 
el.click unless el.nil? 
+0

更新的答案是非常有幫助的。謝謝!我已經相應地更改了我的代碼。 – TrashyMcTrash 2013-03-27 14:32:15