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处理方法如下:

  1. #encoding:utf-8
  2. require 'watir-classic'
  3. class PopupWindow
  4. def initialize( )
  5. @autoit = WIN32OLE.new('AutoItX3.Control')
  6. end
  7.  
  8. #popup_title: 弹出窗口的标题
  9. def push_alert_button(popup_title)
  10. @autoit.WinWaitActive(popup_title, "")
  11. @autoit.ControlClick(popup_title, "", "Button1")
  12. @autoit.WinWaitClose(popup_title)
  13. end
  14.  
  15. #popup_title: 弹出窗口的标题
  16. #button_name: 弹出窗口上要点击的按钮名称
  17. def push_confirm_button(popup_title, button_name)
  18. @autoit.WinWaitActive(popup_title, "")
  19. @autoit.ControlClick(popup_title, "", "[text:#{button_name}]")
  20. @autoit.WinWaitClose(popup_title)
  21. end
  22.  
  23. #popup_title: 弹出窗口的标题
  24. #input: 在弹出窗口的输入口中要输入的值
  25. #button_name: 弹出窗口上要点击的按钮名称
  26. def push_prompt_button(popup_title, input, button_name)
  27. @autoit.WinWaitActive(popup_title, "")
  28. @autoit.ControlSetText(popup_title, "", "Edit1", input)
  29. @autoit.ControlClick(popup_title, "", "[text:#{button_name}]")
  30. @autoit.WinWaitClose(popup_title)
  31. end
  32.  
  33. #popup_title: 弹出窗口的标题
  34. #file_path: 在弹出窗口的输入口中要输入的文件路径
  35. #button_name: 弹出窗口上要点击的按钮名称
  36. def select_file(popup_title, file_path, button_name="打开(&O)")
  37. @autoit.WinWaitActive(popup_title, "")
  38. @autoit.ControlSetText(popup_title, "", "Edit1", file_path)
  39. @autoit.ControlClick(popup_title, "", "[text:#{button_name}]")
  40. @autoit.WinWaitClose(popup_title)
  41. end
  42. end

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

  1. #encoding=utf-8
  2. require "rautomation"
  3. require "watir-classic"
  4. #text means the English text which only displayed on the Alert popup window
  5. def click_alert(text)
  6. window = RAutomation::Window.new(:text => /#{text}/i)
  7. window.wait_until_present
  8. window.activate
  9. puts window.button(:class =>"Button", :index =>0).exists?
  10. window.button(:class =>"Button", :index =>0).click
  11. end
  12.  
  13. #text means the English text which only displayed on the Confirm popup window
  14. #value means the value you want to input on Prompt window
  15. def set_prompt(text, value)
  16. window = RAutomation::Window.new(:text => /#{text}/i)
  17. window.wait_until_present
  18. window.activate
  19. text_field = window.text_field(:class =>"Edit", :index=>0)
  20. text_field.set(value)
  21. window.button(:class =>"Button", :index =>0).click
  22. end
  23.  
  24. #text means the English text which only displayed on the Confirm popup window
  25. def click_confirm(text)
  26. window = RAutomation::Window.new(:text => /#{text}/i)
  27. window.wait_until_present
  28. window.activate
  29. puts window.button(:class =>"Button", :index =>0).exists?
  30. window.button(:class =>"Button", :index =>0).click
  31. end
  32. #text means the English text which only displayed on the Select file popup window
  33. #path means the file path you want to select
  34. def select_file(text, path)
  35. window = RAutomation::Window.new(:text => /#{text}/i)
  36. window.wait_until_present
  37. window.activate
  38. window.text_field(:class =>"Edit", :index =>0).set(path)
  39. window.button(:class =>"Button", :index =>0).click
  40. 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. Java自定义注解和运行时靠反射获取注解

    转载:http://blog.csdn.net/bao19901210/article/details/17201173/ java自定义注解 Java注解是附加在代码中的一些元信息,用于一些工具在编 ...

  2. sql的一些知识_高级

    1.视图 http://www.cnblogs.com/wang666/p/7885934.html 2.存储过程 http://www.cnblogs.com/wang666/p/7920748.h ...

  3. C 标准库 - <signal.h>

    C 标准库 - <signal.h> 简介 signal.h 头文件定义了一个变量类型 sig_atomic_t.两个函数调用和一些宏来处理程序执行期间报告的不同信号. 库变量 下面是头文 ...

  4. react className 有多个值时的处理 / react 样式使用 百分比(%) 报错

    1.react className 有多个值时的处理 <fieldset className={`${styles.formFieldset} ${styles.formItem}`}> ...

  5. 【LeetCode】Word Break 解题报告

    Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separa ...

  6. Android开发之实现锁屏功能

    锁屏须要引入设备超级管理员.在文档Android开发文档的Administration中有具体的说明. Android设备管理系统功能和控制訪问. 主要有一下几个步骤: 1  创建广播接收者,实现De ...

  7. Intel平台map

  8. 如何将安卓手机中已安装的应用导出一个apk安装包

    首先安装ES文件浏览器 然后应用里找到你要导出apk的应用,长按应用,备份应用, 然后在upbacks/apps文件夹里找吧 不得不说 ES浏览器还是屌啊

  9. 04 http协议模拟登陆发帖

    <?php require('./http.class.php'); $http = new Http('http://home.verycd.com/cp.php?ac=pm&op=s ...

  10. oracle 日志归档设置

    下面介绍下oracle的日志文档操作 归档日志作用:归档日志(Archive Log)是是处于非活动(INACTIVE)的状态的重做日志文件的备份,它对ORACLE数据库的备份和恢复起至关重要的作用. ...