最近想用Watir+Ruby写几个简单的脚本来提高工作效率,功能很简单,但是因为页面有多个security popup和弹出子窗口,还是头疼了几天,网上查了很多解决方法,综合总结如下:
1. AutoItX:
require 'watir'
#require 'win32ole' # already included if you use 'require watir'
#
# Function to look for popups
def check_for_popups
autoit = WIN32OLE.new('AutoItX3.Control')
#
# Do forever - assumes popups could occur anywhere/anytime in your application.
loop do
# Look for window with given title. Give up after 1 second.
ret = autoit.WinWait('Microsoft Internet Explorer', '', 1)
#
# If window found, send appropriate keystroke (e.g. {enter}, {Y}, {N}).
if (ret==1) then autoit.Send('{enter}') end
#
# Take a rest to avoid chewing up cycles and give another thread a go.
# Then resume the loop.
sleep(3)
end
end
#
# MAIN APPLICATION CODE
# Setup popup handler
$popup = Thread.new { check_for_popups } # start popup handler
at_exit { Thread.kill($popup) } # kill thread on exit of main application
#
# Main application code follows
ie = Watir::IE.new
ie.goto("http://localhost:88/Test3.html")
ie.link(:text,"Click Here").click
(转载自:http://blog.csdn.net/Testing_is_believing/archive/2010/01/24/5250785.aspx
)
2. 直接用win32api处理(还没试过不知道是不是能工作,先贴下备忘)
require 'win32API'
SendMessage = Win32API.new('user32.dll','SendMessageA',['l','l','l','l'],'v')
FindWindowEx = Win32API.new('user32.dll','FindWindowExA',['l','l','p','p'],'l')
GetWindowText = Win32API.new('user32.dll','GetWindowTextA',['l','p','l'],'l')
我们先找到ie的弹出框。
hwnd =ie.hwnd #根据ie对象获取他的hwnd值
popup_hwnd = FindWindowEx.call(hwnd,0,"#32770",nil) #'#32770'是ie弹出框的类名
#找到弹出框后,遍历弹出框上的button控件
button_hwnds =Array.new
button_hwnd = FindWindowEx.call(popup_hwnd,0,"button",nil)
while button_hwnd!=0
button_hwnds << button_hwnd
button_hwnd = FindWindowEx.call(popup_hwnd,0,"button",nil)
end
#找到button的集合后,要点第i个button,直接使用button_hwnd[i]
#调用sendmessage点击按钮
SendMessage.call(button_hwnd[i], WM_CLICK,IDC_BUTTON1,0)
(转载自:http://www.51testing.com/?uid-170805-action-viewspace-itemid-96033)
3. 贴上我自己写的一个function,针对弹出窗口有certificate error需要点击的:
###################################################
#Secutiry Popup Page Handling
#############################################
def handle_popup(pop_type)
#pop_type = 1: certificate popup page, need to click continue link
#pop_type = 2: popup sub-window, need to get handler of sub-window and continue actions in new window
begin
if pop_type==1 and $ie.title()=~/Certificate Error: Navigation Blocked/i #Certificate popup page
puts '-----------Certificate Error Page Displayed------------------'
click_link('id','overridelink')
elsif pop_type==2 #popup sub-window
puts '--------Find The Popup Window----------'
autoit = WIN32OLE.new('AutoItX3.Control')
ret = autoit.WinWait('Certificate Error: Navigation Blocked', '', 1)
#puts ret
if (ret==1) then
while $ie2.title()=~/Certificate Error: Navigation Blocked/i do
#puts $ie2.title()
i = 9
while i>0 do
autoit.Send('{TAB}')
i=i-1
end
autoit.Send('{ENTER}')
sleep(10)
end
end
end
end
end
以上是用autoit写的方法,之所以要循环,因为我发现用autoit模拟tab和enter键来点击continue的link,经常第一次点击页面没有转换,必须再点击一次,并且要特别注意sleep的时间要足够长,否则点击页面转换就会失败
分享到:
相关推荐
总结,Watir & Ruby测试框架提供了高效、灵活的自动化测试解决方案,结合Ruby的简洁性和Watir的便利性,可以帮助开发者和测试工程师优化测试流程,提高软件质量。在实际应用中,应遵循自动化测试的最佳实践,持续...
Ruby 自动化框架Watir(Web Application Testing in Ruby)是一个强大的工具,专为进行Web应用程序的端到端测试而设计。这个框架允许开发者使用Ruby语言编写测试脚本,与浏览器进行交互,模拟真实用户的行为,从而...
最后,“watir-webdriver”是Watir的一个分支,它利用Selenium WebDriver接口,直接与浏览器的内核进行通信,增强了对浏览器的控制能力,如处理JavaScript交互、模拟用户行为等。WebDriver是一个跨平台的标准,使得...
### Ruby 和 Watir 的安装指南 #### 背景与问题描述 在尝试安装 Watir 时遇到问题,尤其是在服务器 2003 上。主要问题是 Watir 的依赖包 `activesupport` 需要 Ruby 版本 >= 1.8.7,而当前系统上安装的是 Ruby ...
总的来说,Ruby + Watir 测试框架提供了一种高效、灵活的Web应用自动化测试解决方案,结合Excel进行数据驱动,使测试更加有序和可维护。通过深入理解并运用这个框架,你可以提升测试效率,确保产品的质量和稳定性。
Watir的核心理念是通过编程的方式与网页进行交互,它可以操作页面元素,如点击按钮、填写表单、选择下拉选项等,实现对网页行为的全面测试。Watir支持多种浏览器,包括IE、Firefox、Chrome和Safari,这使得测试环境...
为了更好地利用Ruby Watir进行自动化测试,了解Ruby和Watir的基本语法是非常重要的。 - **Ruby官方文档**:`http://www.ruby-lang.org/zh_CN/ruby` 提供了官方文档和教程资源。 - **Ruby参考手册**:`...
Ruby+Watir搭建自动化测试框架是一种高效且灵活的测试解决方案,尤其适合测试人员进行Web应用的自动化测试。本文将详细介绍如何使用Ruby和Watir构建自动化测试环境,以及这两个工具的关键特性和优势。 Ruby是一种...
Watir,全称为“Web Application Testing In Ruby”,是一款基于Ruby语言的开源Web自动化测试框架。它的设计目的是模拟人们在浏览器中的行为,如点击链接、填写表单和按下按钮,并能够检查预期的文本是否出现在页面...
Watir,是Ruby的一个库,它允许通过编写Ruby代码来控制浏览器,进行端到端的Web应用测试。 ### Ruby安装 首先,我们需要在本地环境中安装Ruby。这可以通过Ruby安装器RVM(Ruby Version Manager)或RBEnv来完成。...
Ruby还拥有强大的文本处理能力,适用于各种实用编程任务,并可以通过C语言进行扩展,使其成为各种库的理想前端。 **Watir(Web Application Testing in Ruby)**是基于Ruby的开源自动化测试框架,专门用于Web应用的...
### Ruby Watir框架自动化介绍 #### 一、Ruby Watir框架概述 Watir(Web Application Testing In Ruby)是一个用于Web应用程序测试的Ruby库。它提供了一种简单且强大的方法来模拟用户与Web页面的交互行为,进而...
Ruby-Watir是一种开源自动化测试框架,专门用于在Ruby编程语言中进行Web应用程序的测试。它允许开发者通过编写Ruby代码来模拟用户与浏览器的交互,从而实现端到端的测试。这个工具的名字“Watir”是“Web ...
watir测试框架介绍 watir测试框架介绍 watir测试框架介绍
ruby+watir技术实现的论坛发帖机器人,不完善。
Watir 是一个使用 Ruby 实现的开源Web 自动化测试框架,相对于那些庞大的商业工具来说,它很小巧,也很灵活,提供的功能也足够用。最近抽时间试用了一下,感觉还不错,准备下一步在公司推广使用。因为 Watir 的网站...
总结起来,"Watir1.6.5(commonwatir+firewatir+watir)+Ruby186-26"是一个包含了不同版本的Watir组件以及Ruby环境的打包下载,为开发者提供了一个完整的自动化测试工具链,便于进行Web应用的测试工作。通过学习和熟练...
此文件太大,压缩成两个part,此为Part1 ,两个文件下载后放一起解压缩即可。 watir本地安装的安装文件共六部分,按照一~六安装即可,每一部分重要的内容在描述里面说明,如有疑问,可以留言。
自动化测试Watir框架介绍,采用ruby语言,做UI 自动化的不错的帮助文档。