Capybara 可以与 Turbolinks 一起玩吗?
Posted
技术标签:
【中文标题】Capybara 可以与 Turbolinks 一起玩吗?【英文标题】:Can Capybara play nice with Turbolinks? 【发布时间】:2016-05-21 23:55:33 【问题描述】:我在使用 turbolink 和 capybara 时遇到随机故障。例如,即使页面加载(我可以在浏览器中看到它、capybara 屏幕截图和生成的输出),它似乎也找不到我的 dom 节点。
另一方面,如果我禁用链接上的 turbolink 选项,一切正常。
有什么线索/提示吗?
谢谢
【问题讨论】:
如果您正确编写测试和期望(允许水豚等待行为),那么 turbolinks 不会导致问题 - 添加您遇到的测试和失败示例,我们可以提供指点 我遇到了同样的事情,我认为这是因为 Turbolinks 的页面替换策略混合了 Capybara 方面的缓存或太快的查找。我认为,如果您知道它们是如何工作的,那么几乎很明显您会遇到间歇性故障,希望有人有解决方案...... 我遇到了同样的问题,看起来我需要允许等待行为或在运行测试时以某种方式禁用 turbolinks。 【参考方案1】:尝试更改Capybara.default_max_wait_time = 5
的默认值
【讨论】:
【参考方案2】:使用js:true
。示例:
describe "Some feature", js: true do
...
end
【讨论】:
没有 js:真正的 turbolinks 就不会被使用,所以很明显 OP 已经在使用支持 JS 的驱动程序进行测试以上是关于Capybara 可以与 Turbolinks 一起玩吗?的主要内容,如果未能解决你的问题,请参考以下文章
javascript 与yandex metrika的turbolinks的反击
VueJS 与多页 Rails 6 应用程序与 Turbolinks - 布局
Rails 4 + Turbolinks + JQuery Turbolinks + Coffeescript:事件被多次触发