gpt4 book ai didi

ruby-on-rails - 当ignore_hidden_​​elements为true时无法填充Capybara中的任何隐藏元素

转载 作者:行者123 更新时间:2023-12-04 06:07:23 24 4
gpt4 key购买 nike

我正在使用 Capybara 编写一些功能测试,用于涉及大量 javascript 刷新的页面(当用户单击“继续”按钮时,url 将保持不变,但将显示隐藏的内容,并隐藏显示的内容,因此在页面“上”的任何给定点都有大量文本/选择器/等,但对用户隐藏)。

为了测试这个功能,我希望 Capybara 的 ignore_hidden_​​elements 配置选项为真,因为这最能代表用户体验。

但是页面上也有一些jQuery插件使用花哨的图形来填充隐藏的基本HTML元素,而我想使用Capybara只是为这些元素选择正确的值,而不是尝试使用Javascript来手动模拟与元素交互的用户。

特别是,我试图测试设置为 display:none 并在用户与它们交互时由 jQuery 插件填充的 Select 框。我希望能够做到这一点:

select('value', from: 'select_box')

但选择框是隐藏的。

所以我试过这个:
select('value', from: 'select_box', visible: false)

但这也不起作用。我不愿意将ignore_hidden_​​elements 设置为false,因为这对用户的模拟效果更差,而且我必须返回并在许多测试行中添加“visible: true”。

知道如何做到这一点吗?有没有更巧妙地取消 ignore_hidden_​​elements 的选项?

编辑 -- 根据 Andrey 的回应,我将 ignore_hidden_​​elements 设置为 false,然后进行了与之前相同的 capybara 选择测试:
select 'value', from: 'select_box_id'

而且,就像魔术一样,它奏效了。当我再次将 ignore_hidden_​​elements 更改为 true 并尝试以下行时:
select 'value', from: 'select_box_id', visible: false

我收到此错误:
Failure/Error: select 'value', from: 'select_box_id', visible: false
Capybara::ElementNotFound:
Unable to find select box "select_box_id"

这可能不是一个错误吗?我应该报告吗?

最佳答案

这是 Capybara 2.0.x 中的一个错误。 Here is a test case这在 2.0.x 中可重现,但在 2.1 中不可重现。

但是 Capybara-Webkit 的维护者还没有发布 Capybara 2.1 兼容的版本。

可能的解决方案:

  • 使用 Capybara 2.1 兼容的驱动程序
  • 从 github 上的 master 分支使用 Capybara-Webkit
  • 不要尝试与不可见元素交互(它在 Selenium 中不起作用,所以我认为交互的可能性应该被视为 Capybara-Webkit 中的一个错误)
  • 关于ruby-on-rails - 当ignore_hidden_​​elements为true时无法填充Capybara中的任何隐藏元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16528630/

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