Ruby Selenium 自动化测试警报 Window

Ruby Selenium Automated Test Alert Window

我 运行 在 Ruby/Cucumber 上使用 Selenium Webdriver 在 Chrome 上进行了自动化测试,并试图删除一个对象,但每次我这样做时,都会出现一个警报 window 弹出并要求我确认。 window 有按钮 "ok" 和 "cancel"。如何点击 "ok" 自动化?

根据评论更新

错误堆栈跟踪:

unexpected alert open: {Alert text : Möchten Sie den Benutzer test@test.de wirklich löschen?} (Session info: chrome=68.0.3440.106) 
 (Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Windows NT 6.1.7601 SP1 x86_64) 
 (Selenium::WebDriver::Error::UnhandledAlertError)

这是在警报中单击确定按钮的代码

driver.switch_to.alert.accept

此代码用于关闭警报

driver.switch_to.alert.dismiss

如果您准备好使用 Ruby Selenium Binding,我的建议是使用 WATIR,WATIR 是位于 Ruby selenium binding 顶部的漂亮包装器。有很多常见的错误,例如 Element not visible,Stale element error 在 WATIR 中甚至不会出现,WATIR 有办法在指定的时间内挽救所有这些错误。因此,如果您准备好使用 Ruby Selenium Binding,请使用 WATIR。

在 WATIR 中,您可以通过以下代码接受警报

b.alert.ok

解除警报

b.alert.close

根据您的评论更新,您看到了错误消息...

unexpected alert open: {Alert text : Möchten Sie den Benutzer test@test.de wirklich löschen?} (Session info: chrome=68.0.3440.106) (Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Windows NT 6.1.7601 SP1 x86_64) (Selenium::WebDriver::Error::UnhandledAlertError)

您的主要问题是您使用的二进制文件版本之间不兼容,如下所示:

  • 您正在使用 chrome驱动程序=2.38
  • chromedriver=2.38 的发行说明清楚地提到了以下内容:

Supports Chrome v65-67

  • 您正在使用 chrome=68.0
  • ChromeDriver v2.41 的发行说明清楚地提到了以下内容:

Supports Chrome v67-69

因此 Chrome驱动程序 v2.38Chrome 浏览器 v68.0

解决方案