Capybara switch_to.alert(对话框)间歇性失败

时间:2011-09-29 00:11:08

标签: selenium rspec capybara

我正在尝试使用RSPEC / Capybara与FF中的对话框进行交互。

How to test a confirm dialog with Cucumber?

中找到了一个优雅的解决方案
page.driver.browser.switch_to.alert.accept

然而,当切换没有发生时,我们会出现间歇性故障。

有人遇到过这个吗?无论如何要确保切换始终成功?

谢谢!

1 个答案:

答案 0 :(得分:0)

正如答案所述,当模式警报/确认/提示对话框打开时,浏览器将无响应。如今,即使浏览器已经学会显示非模态窗口,Capybara仍然无法评估页面上下文中的任何代码。

如链接的答案所述,只需存根window.confirm方法即可。这是最稳定的方式。

您可以在Capybara中编写以下两个步骤:

When /I ensure the confirm box returns OK/ do
  page.evaluate_script('window.confirm = function() { return true; }')
end

When /I ensure the confirm box returns Cancel/ do
  page.evaluate_script('window.confirm = function() { return false; }')
end

然后你可以继续重写你的Capybara步骤,这样你首先要确保存根确认框,然后然后点击触发确认框的链接:

When I ensure the confirm box returns OK
And I click on Remove
Then ...