rspec – Capybara:无法找到css

前端之家收集整理的这篇文章主要介绍了rspec – Capybara:无法找到css前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用capybara单击一个复选框,但它似乎找不到,无论我做什么。我能够正确地找到跨度和标签内的跨度,但不是我实际需要的输入。

这是复选框

<span class="checkBox tos">
  <input id="agreement" name="agreement" onclick="agreeValidate();" type="checkBox" value="false">
  <label for="agreement">I accept the <a href="http://www.dev.com:3000/terms" target="_blank">Terms of Use</a>,<a href="http://www.dev.com:3000/privacy" target="_blank">Privacy Policy</a>,and am at least 13 years old</label>
</span>

这里有一些我试过的东西

page.check('agreement')
find(:css,'#agreement').set(true)
find('#agreement').set(true)
find('#agreement').click

但是,他们都给我相同的错误

Unable to find css "#agreement" (Capybara::ElementNotFound)

我也想知道这些方法会不会触发onclick方法,当复选框被点击?我觉得find(:css,’#agreement’)。set(true)不会触发onclick事件。但是,我不知道其余的。

更新

我也试过通过xpath选择元素。这里是我发现的各种东西

find(:xpath,'//*[@id="registration"]/span[2]')

这是能找到跨元素没有问题

find(:xpath,'//*[@id="registration"]/span[2]/input')

这找不到我需要的元素,但这个xpath正确选择chrome的控制台中的元素

find(:xpath,'//*[@id="agreement"]')

这找不到我需要的元素,但xpath选择chrome的控制台中的元素

find(:xpath,'//*[@id="registration"]/span[2]/label')

这可以在span中找到标签元素没有问题。

解决方法

我昨天有确切的问题。 Capybara自动忽略输入,因为它是不可见的。我解决了它与以下:
find('#agreement',:visible => false).click

您还可以将以下内容添加到env.rb中,以使Capybara与所有隐藏的元素进行交互:

Capybara.ignore_hidden_elements = false
原文链接:https://www.f2er.com/css/220797.html

猜你在找的CSS相关文章