如何解决“意外警报打开:{Alert text:}”错误

时间:2019-04-15 15:26:20

标签: ruby selenium-webdriver

我有一个使用AngularJS的ruby项目,目前我正在将测试从Phantomjs转换为Headless chrome,但我不断收到错误消息:

RAD

在多个测试文件中都会发生这种情况。 我尝试添加

“ accept_alert {}”在命令之前:

Selenium::WebDriver::Error::UnhandledAlertError:
            unexpected alert open: {Alert text : }

但收到

#from

find('.sp-advanced-configuration').click

#to
accept_alert{ find('.sp-advanced-configuration').click  } 

以及

Failure/Error: accept_alert{ ... }

          Capybara::ModalNotFound:
            Unable to find modal dialog

不确定要尝试什么

/ *********** ********* /

进一步研究之后,似乎只要继续进行下一个测试之前,测试上还有未保存的更改,就会出现此问题。

有没有一种方法可以接受每个测试而不必添加

Selenium::WebDriver::Error::UnhandledAlertError:
            unexpected alert open: {Alert text : }

在每个测试文件中?

1 个答案:

答案 0 :(得分:0)

看到这个的原因是Poltergesit / PhantomJS曾经用来自动接受意外的系统模态。硒驱动程序不会这样做,因为您的测试应该主动接受或拒绝它。 find('.sp-advanced-configuration').click是打开警报框的操作吗?从您得到的错误中,我猜不会。 accept_alert接收到的块必须是实际触发打开系统模态的块。这意味着您的代码可能需要

accept_alert { # action that triggers the alert }
find('.sp-advanced-configuration').click