Capybara:无法找到css

 番茄国王2013_562_572 发布于 2023-02-04 18:09

我使用capybara点击一个复选框,但无论我做什么,它似乎都找不到它.我能够正确地找到跨度内的跨度和标签,但不能找到我实际需要的输入.

这是复选框


  
  

以下是我尝试过的一些事情

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')

这样就可以labelspan没有问题的情况下找到元素.

2 个回答
  • 我昨天遇到了确切的问题.由于它不可见,Capybara自动忽略了输入.我解决了以下问题:

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

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

    Capybara.ignore_hidden_elements = false
    

    2023-02-04 18:12 回答
  • 尝试将:visible选项设置为false.

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

    默认情况下,Capybara仅查找可见元素.似乎潜在的驱动程序将此输入识别为不可见,因此Capybara尚未找到它.

    :visible选项也由多数的其它水豚方法支持(如check,has_css?,have_selector等等)

    2023-02-04 18:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有