0

我正在调整我的回归测试以在 Firefox 中测试 Web 应用程序。最大的绊脚石似乎是如何在 Firefox 中自动化模态对话框。

在 ie 中,我使用以下脚本的变体,但它在 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")    
4

2 回答 2

2

鉴于您正在谈论一个 javascript 创建的对话框,我真的要问,实际测试这些对话框有很多价值吗?

它基本上相当于测试浏览器的功能

如果您正在谈论此处描述的弹出窗口类型http://wiki.openqa.org/display/WTR/JavaScript+Pop+Ups 那么我认为覆盖 javascript 的第一个解决方案很可能是您最好的跨平台选项。

像这样的模态对话框的问题在于它们基本上是一个 UI,即使它发生在操作系统级别,它不再位于浏览器 DOM 中,因此您需要特定于操作系统的工具(比如依赖于 win32ole 的东西, 例如 autoit) 以生成与本机 UI 和单击按钮、发送击键等的必要交互。我认为提出的大多数解决方案都应该在 windows 上使用 FF (适当重命名预期的窗口标题等) 但会失败在 mac 或 *nix 操作系统上。这意味着您需要为每个操作系统提供不同的解决方案,这很痛苦。

验证您是否可以在页面的 HTML 中找到触发事件的正确内容可能会更容易,因此您知道将触发一个事件,然后覆盖某些东西,所以它不会。alert('This is an alert box')毕竟,当在 javascript 中调用类似的东西时,验证浏览器是否弹出本地对话框并不是你的工作。您担心的是,在 HTML 中,给定的元素被编码为触发所需的事件,例如, onClick = 'javascript:x = confirm('Do you really want to do this');"与该元素相关联的东西

于 2011-04-13T17:36:24.637 回答
0

我在 Firefox 中遇到了类似的问题(我必须在 Firefox 中进行测试)。我可以看到调用 Javascript 的代码,但是当我尝试如上所述覆盖时,没有任何反应。有什么解决方法吗?Watir 的预期更新?;-)

于 2011-05-06T21:21:23.023 回答