2016-08-01 99 views
0

我有一些HTML的複選框我嘗試點擊:水豚/ Poltergeist,點擊隱藏複選框?

<td class="surface center"> 
<div class="checkbox-inline checkbox-inline--empty"> 
<input type="hidden" value="0" name="stuff_check"> 
<input id="stuff_1" class="boolean optional" type="checkbox" name="stuff_1_checked" value="1" data-item="5"> 
<label class="optional" for="stuff_1">Checked</label> 
</div> 
</td> 

當運行一個page.find_by_id('id').trigger('click')它確實工作,只是用click但是它抱怨鬼驅人可能點擊另一個要素:

水豚:: Poltergeist :: MouseEventFailed: 點擊座標[-9468.5,6]失敗。 Poltergeist在這個位置檢測到另一個帶有CSS選擇器''的元素。它可能與您嘗試與之交互的元素重疊。如果 不關心重疊元素,請嘗試使用 node.trigger('click')。

但是我覺得也許這是因爲它被設置爲「隱藏」,所以我試着做page.find_by_id('ID', :visible => false).click但是它給出了同樣的問題。

有什麼建議嗎?由於我知道使用觸發器,因此不建議('點擊')。

回答

1

沒有辦法正確點擊隱藏的元素,因爲用戶無法點擊屏幕上沒有出現的元素。
你的例子令人困惑,因爲隱藏的元素沒有與我通常在這種設置中期望的複選框元素相同的name屬性。假設你真正想要做的是檢查「stuff_1」複選框(並且通過CSS隱藏),那麼你應該做你的應用程序的用戶必須做的 - 點擊標籤。

page.find('label[for="stuff1"]').click 
+0

不幸的是,這個名字是一樣的,但與[]的數字不同,也就是東西[1]等,而不是stuff_1。我對你的答案的語法有點困惑。 []的作用是什麼?並且只是在HTML區域縮小的標籤? – msmith1114

+0

它工作順便!欣賞它。我想我的問題是,我試圖點擊ID ...但我真的應該一直試圖點擊標籤本身。 – msmith1114

+1

這是一個CSS選擇器,[]指定一個CSS屬性選擇器 - 你需要閱讀CSS –

1

嘗試

within('.checkbox-inline checkbox-inline--empty') do 
    check('#stuff_1') 
end 

我真的建議使用撬做到這一點,雖然,你會救自己一噸的痛苦發現的哪些元素在哪裏。

+0

我從來沒有聽說過Pry,它究竟做了什麼?也不知道如果內部會起作用,因爲這些複選框的倍數都在同一個類下。我可以在提到ID時做某種事嗎? – msmith1114

+0

http://pryrepl.org/ 基本上,您將gem添加到您的gemfile,bundle install,然後將'binding.pry'添加到您正在處理的步驟定義中,並在此時停止腳本並讓您通過命令行訪問調試模式。 它需要一點時間才能習慣這些命令,但是您可以將步驟定義的變體粘貼到命令行中,並至少查看是否找到頁面元素,這是編寫測試而不運行它們的有用方法,過度。 – etusm