selenium - Capybara switch_to.alert(对话框)间歇性故障

标签 selenium rspec capybara

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

在以下位置找到了一个优雅的解决方案:How to test a confirm dialog with Cucumber?

page.driver.browser.switch_to.alert.accept

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

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

谢谢!

最佳答案

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

正如链接的答案所述,只需 stub 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 步骤,以便首先确保您 stub 确认框,然后单击触发确认框的链接:
When I ensure the confirm box returns OK
And I click on Remove
Then ...

关于selenium - Capybara switch_to.alert(对话框)间歇性故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7591093/

相关文章:

java - 获取以下代码片段的 java NPE。不确定出了什么问题

ruby-on-rails - Rspec:测试嵌套销毁操作

ruby-on-rails - Rspec测试Rails重定向中的test.host

ruby-on-rails - 有效的 TDD 策略包括哪些部分?

ruby-on-rails - Capybara-如何测试指向同一页面不同部分的链接?

javascript - 网页抓取 : Automating button click

java - 在角度站点中使用 xpath 时找不到元素

javascript - 带有 Protractor/WebDriverJS 元素的 Jasmine 自定义匹配器

ruby - 如何为 Rspec 标准输出匹配器提供多个字符串?

ruby - 为什么这个递归不是无限的?