Capybara click_link 有时不起作用

Posted

技术标签:

【中文标题】Capybara click_link 有时不起作用【英文标题】:Capybara click_link sometimes doesn't work 【发布时间】:2011-10-29 22:47:53 【问题描述】:

我使用默认配置的 Capybara 1.0.0。

click_link "some existing text" # --sometimes-- 不起作用。很奇怪。

find_link "some existing text" # 总是有效

这可能是时间问题;或者可能不是因为 find_link 工作得很好。

我已经通过 save_and_open_page 检查了生成的输出文件,也可以。另外,我增加了等待时间等。但是,也没有帮助。

在我完全找到Capybara的源头之前。你觉得哪里出了问题?

问候

【问题讨论】:

prolly 问题在于您使用 xpath 或 css 选择器定位元素的方式? 【参考方案1】:

每当我的测试出现间歇性问题时,我首先检查的事情之一就是它们的运行顺序。

根据您设置 Rspec 的方式,可能会在您每次运行套件时随机化运行规范的顺序。这意味着有时一切都会过去,有时则不会。

Rspec 将输出一个种子值,您可以使用它以相同的顺序重新运行测试以进行调试。

【讨论】:

【参考方案2】:

尝试使用这种语法click_link('', href: some_path)

【讨论】:

【参考方案3】:

链接可能与另一个元素(如弹出窗口)重叠,或者在页面加载后一段时间后被 Ajax 激活。这在很大程度上取决于您使用的页面类型。

作为一般提示,我建议直接使用查找器,例如:

  # Note :visible => true, it will throw an error if element is overlapped
  find(:xpath, "//a[.='some existing text']", visible: true).click

  # Another approach
  wait_until(15)  first(:xpath, "//a..", visible: true) .click

【讨论】:

以上是关于Capybara click_link 有时不起作用的主要内容,如果未能解决你的问题,请参考以下文章

通过 Capybara (v2) 与 Bootstrap 模态交互时出现问题

如何在 Capybara 和 RSpec 中测试 CSV 文件下载?

使用 Capybara,如何切换到带有“_blank”目标的链接的新窗口?

使用dwr后,javaweb设置的session超时失效,web.xml和tomcat设置都不起作

我的Android进阶之旅------>Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法

配置 RSpec 以对所有请求规范使用 Capybara.javascript_driver