使模式对话框脚本适应Firefox

| 我正在调整我的回归测试以在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\")    
    
已邀请:
鉴于您正在谈论使用javascript创建的对话框,我真的要问,实际测试这些对话框是否有很多价值? 它基本上等于测试浏览器的功能 如果您正在谈论http://wiki.openqa.org/display/WTR/JavaScript+Pop+Ups所述的弹出窗口类型,那么我认为覆盖javascript的第一个解决方案很可能是您最好的跨平台选择。 这样的模式对话框的问题在于,即使在操作系统级别上,它们也基本上是一个UI,它不再位于浏览器DOM中,因此您需要特定于操作系统的工具(例如取决于win32ole,例如autoit),以便与本机UI和单击按钮生成必要的交互,发送击键等。我提出的大多数解决方案都应该与Windows上的FF一起使用(正确重命名预期的窗口标题等)但在Mac或* nix操作系统上将失败。这意味着您需要为每个操作系统使用不同的解决方案,这很痛苦。 可能更容易验证您是否可以在页面的HTML中找到可以触发该事件的适当内容,因此您知道将触发一个事件,然后覆盖该事件,因此不会。毕竟,当在JavaScript中调用“ 1”之类的内容时,验证浏览器是否弹出本地对话框并不是您真正的工作。您所担心的是,在HTML中,给定元素被编码以触发所需的事件,例如元素类似
onClick = \'javascript:x = confirm(\'Do you really want to do this\');\"
    
我在Firefox中遇到了类似的问题(而且我必须在Firefox中进行测试)。我可以看到调用Javascript的代码,但是当我如上所述尝试覆盖时,什么也没有发生。有什么解决方法吗?预期对Watir进行更新? ;-)     

要回复问题请先登录注册