2015-11-09 85 views
0

我無法通過測試來設置複選框。嘗試了谷歌的各種提示,但似乎沒有任何工作。無法使用水豚選擇複選框

源的複選框

<div class="ish-field buttons-conditions"> 
<div class="accept-conditions"> 
<input tabindex="30" 
type="checkbox" 
class="ish-input-regular-news" 
id="RegisterUserFullEmail_Accepted-1" 
value="true" 
name="RegisterUserFullEmail_Accepted" 

該複選框是在網頁上可見。 我希望能夠簡單地做到這一點:check("RegisterUserFullEmail_Accepted-1")但這不起作用。

有什麼建議嗎?

+0

你用什麼驅動程序與水豚?你到底在做什麼錯誤?是什麼讓你說「複選框在頁面上可見」?您是否嘗試過查找(:css,「#RegisterUserFullEmail_Accepted-1」)以查看輸入是否實際位於頁面上,或者查找(:css,「#RegisterUserFullEmail_Accepted-1」,visible :: hidden)以查看其上的頁面但不可見? –

+0

感謝您的回答! – andreheijstek

+0

感謝您的回答!我聲明「在頁面上可見」,因爲我看到了呈現頁面上的複選框。但也許這太簡單了。只有'find(:css,「#RegisterUserFullEmail_Accepted-1」,visible::hidden)'會產生一個結果,所以這意味着複選框確實不可見。對?接下來我嘗試的是:'find(:css,「#RegisterUserFullEmail_Accepted-1」,visible::hidden).set(true)'。但是,這給出了錯誤:元素目前不可見,因此可能不會與(Selenium :: WebDriver :: Error :: ElementNotVisibleError)交互。 – andreheijstek

回答

0

在您試圖驅動的頁面上https://www.plus.nl/registreren複選框實際上隱藏着css display:none,然後使用css :: before僞元素插入已選中或未選中框的圖像(可能會使複選框在所有瀏覽器中都保持一致)。正因爲如此,你不能只檢查複選框,而是你可以點擊複選框的標籤。在這種情況下,以下任一應該這樣做

find(:css, 'label', text: 'Ik accepteer de accountvoorwaarden').click 
find(:css, 'label[for="RegisterUserFullEmail_Accepted-1"]').click 

因爲在這種情況下,標籤在其內部具有一個鏈接,似乎是在鏈路(哪裏會獲得點擊)中間,我們可以看一下否則是在標籤中,並有一個單獨的跨度元素,我們可以點擊,而不點擊鏈接,所以

find(:css, 'label', text: 'Ik accepteer de accountvoorwaarden').find(:css, 'span').click 
find(:css, 'label[for="RegisterUserFullEmail_Accepted-1"] span').click 
+0

謝謝你的支持湯姆!但是,兩者都沒有工作。雙擊「帳戶voorwaarden」(條款和條件)的鏈接,而不是複選框。任何想法? – andreheijstek

+0

嗯 - 他們會在標籤的中間點擊 - 這可能最終會出現在鏈接的單詞上 - 查看html文件時會看到一個單獨的span元素,其中有一個*標籤,因此您可以點擊該元素 - - 給我的回答添加例子 –

+0

你太棒了。這兩個例子都像一個魅力! – andreheijstek

相關問題