我使用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中找到标签元素没有问题。