我有一个测试,检查在用户从自动完成建议中选择一个选项之后,路径是否已经改变。我要在Poltergeist上和凯巴拉做测试。但是,大概是因为我通过JS触发了页面更改,所以我现在必须使用睡眠语句来等待页面完成加载,这当然不是理想的。
这是js:
window.location.href = suggestion.url;这是一个考验:
sleep 1# Allow the time to navigate
expect(current_path).to eq(arg1)其中arg1是预期的页面url。
睡眠效果很好,但原因很明显。如何使测试变得更聪明,并让它等待导航的发生?
发布于 2016-04-14 14:08:15
不要使用eq匹配器和current_path (实际上大多数Capybara的东西),使用have_current_path匹配器
expect(page).to have_current_path(arg1),它将利用建立在Capybara中的自动等待/重试行为。
发布于 2016-04-14 09:23:26
测试新页面上的某些内容(在您正在导航的页面上不存在),rspec将一直查找直到它出现(只要它在默认的等待限制内),然后检查您的路径,例如,先这样做
expect(page).to have_selector("a.testclass", text: "Some link on your new page")然后你的路径测试:
expect(current_path).to eq(arg1)https://stackoverflow.com/questions/36618320
复制相似问题