gpt4 book ai didi

rspec - capybara :无法找到 css

转载 作者:行者123 更新时间:2023-12-03 08:26:56 25 4
gpt4 key购买 nike

我正在使用 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]')

这是能够找到 span元素没问题
find(:xpath, '//*[@id="registration"]/span[2]/input')

这找不到我需要的元素,但是这个 xpath 正确地选择了 chrome 控制台中的元素
find(:xpath, '//*[@id="agreement"]')

这找不到我需要的元素,但 xpath 选择了 chrome 控制台中的元素
find(:xpath, '//*[@id="registration"]/span[2]/label')

这是能够找到 label span 中的元素没有问题。

最佳答案

我昨天遇到了确切的问题。 Capybara 会自动忽略输入,因为它是不可见的。我用以下方法解决了它:

find('#agreement', :visible => false).click

您还可以将以下内容添加到 env.rb 以使 Capybara 能够与所有隐藏元素进行交互:
Capybara.ignore_hidden_elements = false

关于rspec - capybara :无法找到 css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21033560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com