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

Watir RAutomation VS AutoIt to deal with popup的更多相关文章

  1. Watir: 应用Watir,调用AutoIT清空IE浏览器的Cookies

    require 'win32ole'ai = WIN32OLE.new("AutoItX3.Control")ai.RunWait("RunDll32.exe InetC ...

  2. watir学习系列--对话框处理(转)

    1.下面是网上编写的类库,保存为libAutoit.rb #LibAutoit主要处理windows弹出的对话框,调用autoit类进行处理 #函数如下: #- ChooseFileDialog函数: ...

  3. 【ruby】ruby基础知识

    Install Ruby(安装) For windows you can download Ruby from http://rubyforge.org/frs/?group_id=167 for L ...

  4. RAutomation 在 Watir中的使用

    RAutomation的用法 require "rautomation" # 通过匹配部分标题来获取窗口 window = RAutomation::Window.new(:tit ...

  5. AutoIT: 开发界面结合GUI automation和Watir Automation

    可以应用AutoIT开发出界面,从而把AutoIT对GUI的自动化测试与Watir对web的自动化测结合在一起.以下代码是我学习GUI界面开发的实例代码.1. 当点击Watir_Test_Button ...

  6. Watir: 右键点击实例(某些如果应用AutoIt来做会更加简单高效)

    require 'watir' module Watir class Element def top_edge assert_exists assert_enabled ole_object.getB ...

  7. Watir: 对浏览器的保存文件操作, 其实应用的是AutoIt脚本

    def save_file(filepath) ai =WIN32OLE.new("AutoItX3.Control") ai.WinWait("FileDownload ...

  8. ruby + watir 自动化上传图片文件解决方案

    watir自动化捕获上传图片元素: require 'watir' include Watir require 'test/unit' class TC_recorded < Test::Uni ...

  9. Watir资源列表【转】

    Watir简介 "Watir" (发音与 water相近) 全写是 "Web Application Testing in Ruby".Watir是一款用Rub ...

随机推荐

  1. 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 【转】

    http://www.cnblogs.com/powertoolsteam/p/MVC_one.html 系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会A ...

  2. Git安装及SSH Key管理之Windows篇

    一.安装环境 1.本机系统:Windows 10 Pro(64位)2.Git版本:Git-2.11.0-64-bit.exe(64位) 二.Git安装 去官网下载完后一路下一步完成安装,如下图:   ...

  3. Spring HTTP Service

    基于Spring MVC, 使用Http Service Invoke远程调用方法 (参考: http://blog.csdn.net/hanqunfeng/article/details/43031 ...

  4. 从SDCard获取的图片按分辨率处理的方法

    前段时间公司开发的Launcher要做主题切换的功能,但切换主题时须要从sdcard中获取要切换的图片资源,拿到后图片的大小不正常. 后来查找原因是:系统对不同分辨率拿到的图片资源会自己主动的做转化, ...

  5. SPFA 求带负权的单源最短路

    int spfa_bfs(int s) { ///s表示起点. queue <int> q; memset(d,0x3f,sizeof(d)); ///d数组中存下的就是最短路径(存在的话 ...

  6. Qt跨平台的一个例程

    我的同事penk在近期北京的Hackathon展示了一个在多平台的例程. 非常多开发人员对这个挺感兴趣的. 今天我就把这个资源介绍给大家. 这是同一个用Qt写的应用.能够同一时候在Ubuntu Des ...

  7. Sencha touch 初体验

    一.什么是Sencha Touch? Sencha Touch是一个应用手持移动设备的前端js框架,与extjs是同一个门派的,它继承了extjs的优点和缺点.功能很强大,效果很炫丽,效率不高. 二. ...

  8. Controller//控制器

    #include<opencv2\core\core.hpp> #include<opencv2\imgproc\imgproc.hpp> #include<opencv ...

  9. SDUT 1068-Number Steps(数学:直线)

    Number Steps Time Limit: 1000ms   Memory limit: 10000K  有疑问?点这里^_^ 题目描写叙述 Starting from point (0,0) ...

  10. 如何打造你的独特观点(一) ——形成“自己的想法”的基础课zz

    信息过载的时代,能在各种KOL的声音中保持独立思考很不容易,能输出独特观点又进一层.不断练习我们独立思考的能力,有助于看清周围复杂的事物,也能让我们在日常生活中给人留下“有趣之人”的印象,提升人际交往 ...