Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > 汇编语言 > watir 处理弹出窗口 [fxzeng 原创]
【标  题】:watir 处理弹出窗口 [fxzeng 原创]
【关键字】:watir,fxzeng
【来  源】:http://www.cnitblog.com/fxzeng/archive/2006/09/02/16303.html

watir 处理弹出窗口 [fxzeng 原创]

Your Ad Here

watir 处理弹出窗口 [fxzeng 原创] (转载请保留此标志)

fxzeng
mail: fxzeng@126.com


处理弹出窗口是进行web测试的必经之路, 对于对于初学者这似乎是一个并不太好解决的问题, watir 自带的unittests里有这样的例子,但是牵扯的文件多, 而且还涉及到块的调用, 往往初学者只能照葫芦画瓢的解决这个问题.

这里介绍一种简便的处理方法, 先看看unittests中是如何处理弹出窗口的:
共牵扯到三个文件
#-----------------unittests/jscript_test.rb-------------------------------
???? # check_dialog, to create a new thread to help?push the dialog button
???? #
??? def check_dialog(extra_file, expected_result, &block)
??????? goto_javascript_page()
???????
Thread.new { system("rubyw \"#{$mydir}\\#{extra_file}.rb\"") }
??????? # system(), call?win cmd to run
jscriptExtraAlert.rb

??????? block.call
??????? testResult = $ie.text_field(:id, "testResult").value
??????? assert_match( expected_result, testResult )?
??? end

??? # test method
??? def test_alert_button()
??????? check_dialog('jscriptExtraAlert', /Alert OK/){ $ie.button(:id, 'btnAlert').click }
??? end
#--------------END--jscript_test.rb-------------------------------

#---------------unittests/jscriptExtraAlert.rb-------------------------------
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') if $0 == __FILE__

require 'watir/WindowHelper'

helper = WindowHelper.new
helper.push_alert_button()


#-------------END--jscriptExtraAlert.rb-------------------------------

#-------------watir/WindowHelper.rb------------------------------
require 'win32ole'

class WindowHelper
??? def initialize( )
??????? @autoit = WIN32OLE.new('AutoItX3.Control')
??? end

??? def push_alert_button()
??????? @autoit.WinWait "Microsoft Internet Explorer", ""
??????? @autoit.Send "{ENTER}"
??? end
#------------END--WindowHelper.rb--------------------------
文件之间的调用关系真是够复杂的, : ) 涉及到了三个文件, 如果需要按Cancel键的话还得增加一个jscriptExtraConfirmCancel.rb, 需要处理安全警告的话还得增加一个...., 或许你会说, 这些文件都不复杂, 写在主文件里不就行了么, 干吗还得调用文件?? 呵呵, 试试就知道为什么了...
这里介绍的方法用一个文件就可以代替原来的多个文件, 即可以处理确认, 撤消, 安全警告, 选择文件等多种情况的弹出窗口.
#----------main-method-----------------------------
def test_push_button
??? ... ...
??? thrs = []
??? thrs << Thread.new{system("rubyw #{mydir}\\myWinHelper.rb Microsoft delete TAB ENTER")}
??? # Microsoft, title of the popup window, delete, text contained in the window, TAB ENTER, push TAB key?then ENTER
??? thrs << Thread.new{$ie.button(:id, 'btnAlert').click }
??? thrs.each{|x| x.join}
??? ... ...
end
#---------END--main-method--------------------

#--------myWinHelper.rb-----------------------
require 'win32ole'

autoit = WIN32OLE.new"AutoItX3.Control"

title = ARGV[0]
texts = ARGV[1]
operation = []
for i in 2..(ARGV.lengh - 3)
??? operaton << ARGV[i]
end
autoit.WinWait(title,texts)
operatoin.each{|x|
??? autoit.Send"{x}"
}
#---------END--myWinHelper.rb------------

这样, 弹出窗口问题就可以轻松解决了, 只需一个myWinHelper.rb就可以处理确定取消等常见问题, 这里的myWinHelper.rb只是一个例子, 如果有兴趣, 可以在里面添加语句, 可以轻松处理更多问题, 比如
安全警告窗口:
??? thrs << Thread.new{system("rubyw #{mydir}\\myWinHelper.rb \"TAB 3\" ENTER")}
??? # push TAB key three times, and ENTER
选择文件窗口:
??? thrs << Thread.new{system("rubyw #{mydir}\\myWinHelper.rb d:\\file\\test.txt !o")}
??? # enter the directory of the file, and then push Alt+o

watir 处理弹出窗口 [fxzeng 原创]

fxzeng
mail: fxzeng@126.com

MFC应用集成VBA二次开发:【上一篇】
是否真的存在web2.0:【下一篇】
【相关文章】
  • Watir 试用手记, 一个很不错的开源 Web 自动化测试框架
  • A Patch for Ruby Watir Test Framework
  • 【随机文章】
  • 利用ar解决debian中常见的依赖问题
  • 七种武器让Word文档"减肥"
  • 加速交换机端口初始化进程
  • 目标确立
  • 一种不使用数据源用java直接连接数据源的方法
  • linux 超级终端
  • 假期学习笔记(二)
  • CMM软件过程改进前常见问题解答 (3)
  • 经验几则[摘自DooIT]
  • 一次性网络:自己的网络
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.