macos - Waitr Webdriver 中的警报框

标签 macos firefox watir webdriver

我看了一下这里:http://wiki.openqa.org/display/WTR/JavaScript+Pop+Ups

每个解决方案都适用于 Windows 上的 IE。我在 Mac 上使用 Firefox。有没有办法单击 JavaScript 警报框的“确定”?

最佳答案

正确处理警报和提示仍然是being worked on在WebDriver中,但常见的解决方法是使用execute_script()覆盖窗口函数,即

browser.execute_script("window.alert = function(msg) { window.lastAlert = msg; }")
browser.button(:id => "trigger-alert").click
browser.execute_script("return window.lastAlert") #=> "the message"

由于我想避免一堆猴子补丁(Watir 社区中的常见问题),所以我添加了一些 helper methods作为可选要求 - 在下一个版本之后您应该能够执行以下操作:

require "watir-webdriver/extensions/alerts"

browser.alert do
  browser.button(:id => "alert").click 
end #=> "the alert message"

browser.confirm(true) do
  browser.button(:id => "confirm").click
end #=> "the confirm message"  

browser.prompt("returned value") do
  browser.button(:id => "prompt").click 
end #=> { :message => "foo", :default => "bar" }

请注意,这是暂时的,当 WebDriver 中的问题得到解决后,该 API 可能会在将来被删除。

更新:

现已实现正确的警报处理。上面的例子现在可以这样完成:

browser.button(:id => "alert").click
browser.alert.ok

browser.button(:id => "confirm").click
browser.alert.ok # or browser.alert.close

browser.button(:id => "prompt").click
alert = browser.alert
alert.text #=> "foo"
alert.ok

关于macos - Waitr Webdriver 中的警报框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3652582/

相关文章:

security - 如何在 OSX 上欺骗 USB 供应商 ID 和产品 ID 值?

macos - 使用 vim 更新 janus 后损坏的 git 提交消息

macos - 为什么 FIFinderSyncController.isExtensionEnabled 总是返回 false?

internet-explorer - 如何在 IE9 和 Firefox 中应用 appearance none 属性?

testing - 单击 Watir 中嵌套元素的复选框

Mac OS X 终端中的 Python unicode

html - 为什么 css "reset"会破坏 select optgroup?

Javascript firefox 无法找到所有其他浏览器所做的值

ruby - 如何使用 watir-webdriver 和 ruby​​ 自动化 slider ?

watir - 如何在不影响性能的情况下找到带有 watir-webdriver 的 <acronym> 标签?