在我的 rspec 功能中,我嘗試檢查一個帶有相關標簽的復選框,因為輸入是隱藏的。我的標簽包含鏈接(<a>標簽),所以每次我使用check('user[agree_terms]', allow_label_click: true)它時都不會選中該框,而是打開標簽中包含的鏈接。
這是我的觀點ERB
<p class="col boolean required user_agree_terms">
<input name="user[agree_terms]" type="hidden" value="0">
<input class="boolean required" required="required" aria-required="true" type="checkbox" value="1" name="user[agree_terms]" id="user_agree_terms">
<label class="boolean required" for="user_agree_terms">
<abbr title="required">*</abbr>
J'ai accepté les <a target="_blank" href="https://somelink">Conditions Générales d'Utilisation</a> et la <a target="_blank" href="https://somelink">Politique de Confidentialité</a>
</label>
</p>
這是我的規格
# I tried both but its behave the same way : open the <a> tag
find('label[for="influencer_agree_terms"]').click
check('influencer[agree_terms]', allow_label_click: true)
您知道另一種檢查該框的方法嗎?
順便說一下,當我單擊標簽時,瀏覽器上的 UI 可以正常作業。
uj5u.com熱心網友回復:
當您告訴 Capybara 單擊一個元素時,它會單擊該元素的中間,在這種情況下,這是您擁有conditions鏈接的位置,因此在標簽元素之前單擊。一種選擇是專門單擊標簽中但遠離鏈接的 abbr 元素
find('label[for="influencer_agree_terms"] abbr').click
另一種選擇是利用 allow_label_click 支持為單擊位置指定偏移量這一事實
check('influencer[agree_terms]', allow_label_click: { x: 10, y: 10 })
根據該偏移的設定,Capybara.configure w3c_click_offset該偏移可能來自標簽元素的中心或左上角,因此可以根據需要調整值。從技術上講,您可以在呼叫 click 時做同樣的事情
find('label[for="influencer_agree_terms"]').click(x: 10, y: 10)
但check在處理復選框時通常最??好使用
uj5u.com熱心網友回復:
默認情況下,capybara#click方法將單擊元素的中間,也就是我的鏈接所在的位置。幸運的是#click有如下偏移選項#click(x: 0, y: 0)。
因此,要借助包含鏈接的標簽來檢查一個框:
find('label[for="influencer_agree_terms"]').click(x: 0, y: 0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/489661.html
