Watir Webdriver中的警报框

时间:2010-09-06 15:24:17

标签: macos firefox watir webdriver

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

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

2 个答案:

答案 0 :(得分:4)

WebDriver中警报和提示的正确处理仍为being worked on,但常见的解决方法是使用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

答案 1 :(得分:1)

我知道iMacros for Firefox插件可以点击这些警告框。也许你可以将它与我们的设置结合起来?