Selenium Webdriver Turbolinks

Enr*_*que 5 ruby selenium ruby-on-rails turbolinks

我目前正在为使用Turbolink(红宝石)的产品编写Selenium Webdriver测试。当我单击一个按钮时,我必须等待涡轮链接工作。当我测试jQuery回调时,我通常使用以下命令等待代码:

driver.execute_script 'return jQuery.active == 0'
Run Code Online (Sandbox Code Playgroud)

我可以通过Java脚本检查哪些内容以验证Turbolinks是否已完成?还是我可以抓住一个可以做到的元素?我在顶部看到一个进度条,但是在任何地方都找不到该元素。

编辑:

我可以做这样的事情:

driver.execute_script "$(document).on('page:load', function () { window.turbolinks = true; });"
driver.execute_script "$(document).on('page:before-change', function () { window.turbolinks = false; });"
Run Code Online (Sandbox Code Playgroud)

在页面加载时,然后我可以在window.turbolinks上等待

wait = Selenium::WebDriver::Wait.new(:timeout => 10)
wait.until { driver.execute_script 'return window.turbolinks;' }
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来解决这个问题?

小智 0

根据 Turbolinks 文档,进度条有一个类,turbolinks-progress-bar您可以检查它是否存在并等待它消失?