Rails capybara点击带有链接的标签



在我的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工作正常。

当您告诉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.w3c_click_offset的设置,偏移量可以从标签元素的中心或左上角开始,因此根据需要调整值。从技术上讲,你可以在调用click

时做同样的事情
find('label[for="influencer_agree_terms"]').click(x: 10, y: 10)

但是在处理复选框

时通常使用check更好

默认情况下,capybara#click方法将在元素的中间单击,就在我的链接所在的位置。幸运的是#click有像#click(x: 0, y: 0)一样的偏移选项。

因此,要在包含链接的标签的帮助下选中一个框:find('label[for="influencer_agree_terms"]').click(x: 0, y: 0)

相关内容

  • 没有找到相关文章

最新更新