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 - 布局

Capybara 的 Appium 驱动程序

Rails 4 + Turbolinks + JQuery Turbolinks + Coffeescript:事件被多次触发

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

如何模拟与 Capybara 共享地理位置?