首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让Capybara/Poltergeist等js启动导航完成?

问如何让Capybara/Poltergeist等js启动导航完成?
EN

Stack Overflow用户
提问于 2016-04-14 09:01:29
回答 2查看 1.2K关注 0票数 2

我有一个测试,检查在用户从自动完成建议中选择一个选项之后,路径是否已经改变。我要在Poltergeist上和凯巴拉做测试。但是,大概是因为我通过JS触发了页面更改,所以我现在必须使用睡眠语句来等待页面完成加载,这当然不是理想的。

这是js:

代码语言:javascript
复制
window.location.href = suggestion.url;

这是一个考验:

代码语言:javascript
复制
sleep 1# Allow the time to navigate
expect(current_path).to eq(arg1)

其中arg1是预期的页面url。

睡眠效果很好,但原因很明显。如何使测试变得更聪明,并让它等待导航的发生?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-14 14:08:15

不要使用eq匹配器和current_path (实际上大多数Capybara的东西),使用have_current_path匹配器

代码语言:javascript
复制
expect(page).to have_current_path(arg1)

,它将利用建立在Capybara中的自动等待/重试行为。

票数 8
EN

Stack Overflow用户

发布于 2016-04-14 09:23:26

测试新页面上的某些内容(在您正在导航的页面上不存在),rspec将一直查找直到它出现(只要它在默认的等待限制内),然后检查您的路径,例如,先这样做

代码语言:javascript
复制
expect(page).to have_selector("a.testclass", text: "Some link on your new page")

然后你的路径测试:

代码语言:javascript
复制
expect(current_path).to eq(arg1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36618320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档