【问题标题】:Adapting Modal Dialog Script to Firefox使模态对话框脚本适应 Firefox
【发布时间】:2011-04-13 01:11:50
【问题描述】:

我正在调整我的回归测试以在 Firefox 中测试网络应用。最大的绊脚石似乎是如何在 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")    

【问题讨论】:

  • 是否有可能链接到显示您所面临的弹出窗口示例的页面?
  • 对不起。我刚看到这个回复。我遇到的弹出窗口类型就像此页面上的第一个弹出窗口 (wiki.openqa.org/display/WTR/JavaScript+Pop+Ups)。它在哪里确认用户的操作。
  • 鉴于此,我已经在下面完全修改了我提出的答案

标签: watir autoit firewatir


【解决方案1】:

鉴于您正在谈论一个 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');" 附属于元素

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我没有找到很好的解决方案。但我所做的是使用救援声明。因此,当它在 Firefox 中运行的方法在 IE 中失败时,它会转到在 ie 中运行的方法。我的代码大纲如下。 begin b.startClicker("OK") b.button(:id, "Button to Click").click rescue NoMethodError b.execute_script("window.confirm = function() {return true}") b.button(:id , "Button to Click").click end
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    相关资源
    最近更新 更多