如何让Capybara/Poltergeist等待js启动的导航完成
How to make Capybara/Poltergeist wait for js initiated navigation to finish?
我有一个测试,检查用户从自动完成建议中选择一个选项后,路径是否发生了更改。我正在Poltergeist上测试Capybara。然而,大概是因为我通过JS触发了页面更改,所以我现在必须使用sleep语句来等待页面完成加载,这当然不理想。
这是js:
window.location.href = suggestion.url;
这就是测试:
sleep 1# Allow the time to navigate
expect(current_path).to eq(arg1)
其中arg1是预期的页面url。
它对睡眠效果很好,但这不是最佳的原因是显而易见的。如何使测试更智能,并让它等待导航发生?
不要将eq
匹配器与current_path一起使用(实际上大多数Capybara都是这样),使用have_current_path匹配器
expect(page).to have_current_path(arg1)
它将利用Capybara 内置的自动等待/重试行为
测试新页面上的某些内容(在您导航的页面上不存在),rspec将一直寻找,直到它出现(只要它在默认等待限制内),然后检查您的路径,例如,执行类似于第一个的操作
expect(page).to have_selector("a.testclass", text: "Some link on your new page")
然后你的路径测试:
expect(current_path).to eq(arg1)
相关文章:
- 我的jQuery插件参数没有正确启动,遇到了问题
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 单击顶部导航时如何进行向下滚动效果(向下滑动).
- angular 1.5应用程序中的导航栏
- 从控制器返回后Ajax启动事件激发
- 无法从jquery Mobile导航栏重定向到另一个页面
- Meteor上的启动页面
- 如何防止网页加载后自动启动功能
- 引导程序:在导航栏中,显示悬停在单个位置的基于Li Link的不同内容
- 单击启动CSS导航活动类更改
- 使用触摸启动导航下拉菜单,以实现 IOS 功能
- 如何让Capybara/Poltergeist等待js启动的导航完成
- Angular Bootstrap 3导航栏子菜单不会启动
- 不安全的 JavaScript 尝试启动带有 URL 的框架的导航更改 - 如何尝试捕获它
- sharepoint中快速启动导航中的子链接
- 覆盖文字不隐藏,启动和关闭覆盖导航不工作
- 如何防止'滚动历史导航'不防止触启动
- 不安全的JavaScript试图为带有URL的框架启动导航
- 启动.滚动链接菜单并修复页面顶部的导航栏
- SAPUI5 Cordova启动原生安卓导航