• Watir RAutomation VS AutoIt to deal with popup


    Watir使用过程中,经常遇到的弹出框分为几类:

    1. Alert

    2. Confirm

    3. Prompt

    4. File select

    Watir 处理弹出框,有很多方法,可以应用 AutoIt来处理,也可以通过 RAutomation来处理。

    AutoIt的局限性是无法跨平台,所以在Watir 4.0中被摒弃了;

    RAutomation 对中文的处理存在一定的局限性,对于新手来说,常常无法找到问题的解决方案。

    Watir-classic 中的 Watir::Alert 方法,是无法起作用的。

    我对AutoIt,Rautomation处理弹出框做了一个总结:

    AutoIt处理方法如下:

    #encoding:utf-8
    require 'watir-classic'
    class PopupWindow
        def initialize( )
            @autoit = WIN32OLE.new('AutoItX3.Control')
        end
    
        #popup_title: 弹出窗口的标题
        def push_alert_button(popup_title)
            @autoit.WinWaitActive(popup_title, "")
            @autoit.ControlClick(popup_title, "", "Button1")
            @autoit.WinWaitClose(popup_title)
        end
    
        #popup_title: 弹出窗口的标题
        #button_name: 弹出窗口上要点击的按钮名称
        def push_confirm_button(popup_title, button_name)
            @autoit.WinWaitActive(popup_title, "")
            @autoit.ControlClick(popup_title, "", "[text:#{button_name}]")
            @autoit.WinWaitClose(popup_title)
        end
    
        #popup_title: 弹出窗口的标题
        #input: 在弹出窗口的输入口中要输入的值
        #button_name: 弹出窗口上要点击的按钮名称
        def push_prompt_button(popup_title, input, button_name)
            @autoit.WinWaitActive(popup_title, "")
            @autoit.ControlSetText(popup_title, "", "Edit1", input)
            @autoit.ControlClick(popup_title, "", "[text:#{button_name}]")
            @autoit.WinWaitClose(popup_title)
        end
    
        #popup_title: 弹出窗口的标题
        #file_path: 在弹出窗口的输入口中要输入的文件路径
        #button_name: 弹出窗口上要点击的按钮名称
        def select_file(popup_title, file_path, button_name="打开(&O)")
            @autoit.WinWaitActive(popup_title, "")
            @autoit.ControlSetText(popup_title, "", "Edit1", file_path)
            @autoit.ControlClick(popup_title, "", "[text:#{button_name}]")
            @autoit.WinWaitClose(popup_title)
        end
    end
    

     如何应用 RAutomation 处理 Watir IE 弹出框?

    #encoding=utf-8
    require "rautomation"
    require "watir-classic"
    #text means the English text which only displayed on the Alert popup window
    def click_alert(text)
        window = RAutomation::Window.new(:text => /#{text}/i)
        window.wait_until_present
        window.activate
        puts window.button(:class =>"Button", :index =>0).exists?
        window.button(:class =>"Button", :index =>0).click
    end
    
    #text means the English text which only displayed on the Confirm popup window
    #value means the value you want to input on Prompt window
    def set_prompt(text, value)
        window = RAutomation::Window.new(:text => /#{text}/i)
        window.wait_until_present
        window.activate
        text_field = window.text_field(:class =>"Edit", :index=>0)
        text_field.set(value)
        window.button(:class =>"Button", :index =>0).click
    end
    
    #text means the English text which only displayed on the Confirm popup window
    def click_confirm(text)
        window = RAutomation::Window.new(:text => /#{text}/i)
        window.wait_until_present
        window.activate
        puts window.button(:class =>"Button", :index =>0).exists?
        window.button(:class =>"Button", :index =>0).click
    end
    #text means the English text which only displayed on the Select file popup window
    #path means the file path you want to select
    def select_file(text, path)
        window = RAutomation::Window.new(:text => /#{text}/i)
        window.wait_until_present
        window.activate
        window.text_field(:class =>"Edit", :index =>0).set(path)
        window.button(:class =>"Button", :index =>0).click
    end
  • 相关阅读:
    ExtAspNet应用技巧(二)
    JavaScript继承详解(六)
    ExtAspNet新版本发布,集成Extjs3.0,兼容IE浏览器
    ExtAspNet发展规划
    把Doc文档转换成rtf格式 (转载)
    提高Sql Server性能的10个技巧
    winform中树和数据库关联操作的例子(C#)
    为什么C#没有提供“缺省参数”
    让UML消失一段时间
    把RichTextBox中的文本保存到Sql Server中
  • 原文地址:https://www.cnblogs.com/autotest/p/3671140.html
Copyright © 2020-2023  润新知