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.38 和 Chrome 浏览器 v68.0
解决方案
- 将 Selenium 升级到当前级别 Version 3.14.0。
- 将Chrome驱动程序升级到当前ChromeDriver v2.41级别。
- 保持 Chrome 版本在 Chrome v67-69[=52= 之间] 水平。 (as per ChromeDriver v2.41 release notes)
- 如果您的基础 Web Client 版本太旧,则通过 Revo Uninstaller 卸载它并安装最新的 GA 和发布版本的 Web Client .
- 执行你的
@Test
.
我 运行 在 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.38 和 Chrome 浏览器 v68.0
解决方案
- 将 Selenium 升级到当前级别 Version 3.14.0。
- 将Chrome驱动程序升级到当前ChromeDriver v2.41级别。
- 保持 Chrome 版本在 Chrome v67-69[=52= 之间] 水平。 (as per ChromeDriver v2.41 release notes)
- 如果您的基础 Web Client 版本太旧,则通过 Revo Uninstaller 卸载它并安装最新的 GA 和发布版本的 Web Client .
- 执行你的
@Test
.