我使用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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。