【问题标题】:Ruby Selenium Automated Test Alert WindowRuby Selenium 自动测试警报窗口
【发布时间】:2019-01-17 18:13:08
【问题描述】:

我在 Chrome 上使用 Selenium Webdriver 在 Ruby/Cucumber 上运行自动化测试并尝试删除一个对象,但每次我这样做时,都会弹出一个警告窗口并要求我确认。该窗口有“确定”和“取消”按钮。如何自动点击“确定”?

从 cmets 更新

错误堆栈跟踪:

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)

【问题讨论】:

  • 如@DebanjanB 所说,升级您的 chrome 驱动程序和 selenium,然后尝试执行代码 b.alert.ok,它会起作用。 gem install watir 也会安装 selenium-webdriver,但是一旦安装后,只需检查 gem list selenium-webdriver,如果不是最近的,请尝试安装 gem install selenium-webdriver

标签: ruby selenium cucumber selenium-chromedriver watir


【解决方案1】:

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

driver.switch_to.alert.accept

此代码用于解除警报

driver.switch_to.alert.dismiss

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

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

b.alert.ok

解除警报

b.alert.close

【讨论】:

  • 我试过这段代码,但它确实有效,而且我也已经在使用 watir,我需要更改一些配置或要求吗?不幸的是,我对测试自动化很陌生。我刚刚得到:意外警报打开:{警报文本:Möchten Sie den Benutzer test@test.de wirklich löschen?}(会话信息:chrome=68.0.3440.106)(驱动程序信息:chromedriver=2.38.552522(437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),平台= Windows NT 6.1.7601 SP1 x86_64) (Selenium::WebDriver::Error::UnhandledAlertError)
  • @EnginTopuzoglu 好的,那么该警报不是 JavaScript 的可能性更大,请您更新该警报框的 Html 代码好吗?您正在使用 WATIR 吗?伟大的!请添加 WATIR 标签!
  • 我在 devtools 中看不到警告框的 html 代码
  • 好的,你能不能执行 watir 代码b.alert.ok 并在警报倾向于引发之前设置 sleep 4 并编写此代码来检查它是否是一个 javascript 警报 b.alert.exists?,如果它返回 true 那么你有 Javascript 警报,或者您可能有一些隐藏元素,当您单击按钮时会弹出一些隐藏元素,这是 html 的一部分。可以给我网址看看吗?
  • 谢谢,我用@browser = Selenium::WebDriver.for :chrome, options: options @browser.switch_to.alert.accept
【解决方案2】:

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

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)

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

  • 您正在使用 chromedriver=2.38
  • chromedriver=2.38 的发行说明明确提及以下内容:

支持 Chrome v65-67

  • 您正在使用 chrome=68.0
  • ChromeDriver v2.41 的发行说明明确提及以下内容:

支持 Chrome v67-69

所以 ChromeDriver v2.38Chrome 浏览器 v68.0

之间存在明显的不匹配

解决方案

【讨论】:

    猜你喜欢
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多