我正在调整我的回归测试来测试Firefox中的Web应用程序。最大的绊脚石似乎是如何在firefox中自动化模态对话框。
即我使用下面脚本的变体,但它在Firefox中不起作用。有没有一种方法可以在ie和firefox中使用?
popup=Thread.new {
autoit=WIN32OLE.new('AutoItX3.Control')
ret=autoit.WinWait(title,"",60)
if (ret==1)
puts "There is popup."
autoit.WinActivate(title)
button.downcase!
if button.eql?("ok") || button.eql?("yes") || button.eql?("continue")
autoit.Send("{Enter}")
else
autoit.Send("{tab}")
autoit.Send("{Enter}")
end
elsif (ret==0)
puts "No popup, please check your code."
end
}
at_exit { Thread.kill(popup) }
end
button.click_no_wait
check_for_popups("Message from webpage", "OK")
答案 0 :(得分:2)
鉴于你在谈论一个javascript创建的对话框,我真的不得不问,实际测试那些有很多价值吗?
它基本上等于测试浏览器的功能
如果你在谈论这里描述的弹出窗口类型http://wiki.openqa.org/display/WTR/JavaScript+Pop+Ups,那么我认为第一个覆盖javascript的解决方案可能是你最好的跨平台选项。
像这样的模态对话框的问题在于它们基本上是一个UI,即使在操作系统级别发生,它也不再在浏览器DOM中,因此你需要特定于操作系统的工具(比如那些东西)取决于win32ole,例如autoit),以便与本机UI和点击按钮生成必要的交互,发送击键等。我认为大多数解决方案应该在Windows上使用FF(正确重命名预期的窗口标题等)但在mac或* nix操作系统上会失败。这意味着您需要为每个操作系统提供不同的解决方案,这很痛苦。
可能只是更容易验证您是否可以找到在页面的HTML中触发事件的正确内容,因此您知道要触发的事件,然后覆盖事物,而不是。毕竟,在javascript中调用类似alert('This is an alert box')
的内容时,验证浏览器是否会弹出本地对话框并不是真正的工作。您担心的是,在HTML中,给定元素被编码以触发所需的事件,例如,这个与onClick = 'javascript:x = confirm('Do you really want to do this');"
有关联的元素
答案 1 :(得分:0)
我在Firefox中遇到类似的问题(我必须在Firefox中测试)。我可以看到调用Javascript的代码但是当我尝试覆盖如上所述时没有任何反应。这有什么办法吗?对Watir的预期更新? ; - )