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的点击事件不起作的问题解决方法