`
candyania
  • 浏览: 33732 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

Watir Ruby 对弹出框进行处理的方法总结

阅读更多

最近想用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测试框架

    总结,Watir & Ruby测试框架提供了高效、灵活的自动化测试解决方案,结合Ruby的简洁性和Watir的便利性,可以帮助开发者和测试工程师优化测试流程,提高软件质量。在实际应用中,应遵循自动化测试的最佳实践,持续...

    ruby 自动化框架watir

    Ruby 自动化框架Watir(Web Application Testing in Ruby)是一个强大的工具,专为进行Web应用程序的端到端测试而设计。这个框架允许开发者使用Ruby语言编写测试脚本,与浏览器进行交互,模拟真实用户的行为,从而...

    test_logger1.rar_Logger wat_ruby _watir_watir ruby_watir-webdriv

    最后,“watir-webdriver”是Watir的一个分支,它利用Selenium WebDriver接口,直接与浏览器的内核进行通信,增强了对浏览器的控制能力,如处理JavaScript交互、模拟用户行为等。WebDriver是一个跨平台的标准,使得...

    ruby and watir 安装指南

    ### Ruby 和 Watir 的安装指南 #### 背景与问题描述 在尝试安装 Watir 时遇到问题,尤其是在服务器 2003 上。主要问题是 Watir 的依赖包 `activesupport` 需要 Ruby 版本 &gt;= 1.8.7,而当前系统上安装的是 Ruby ...

    ruby+watir 测试框架

    总的来说,Ruby + Watir 测试框架提供了一种高效、灵活的Web应用自动化测试解决方案,结合Excel进行数据驱动,使测试更加有序和可维护。通过深入理解并运用这个框架,你可以提升测试效率,确保产品的质量和稳定性。

    Watir测试框架介绍

    Watir的核心理念是通过编程的方式与网页进行交互,它可以操作页面元素,如点击按钮、填写表单、选择下拉选项等,实现对网页行为的全面测试。Watir支持多种浏览器,包括IE、Firefox、Chrome和Safari,这使得测试环境...

    ruby watir教程

    为了更好地利用Ruby Watir进行自动化测试,了解Ruby和Watir的基本语法是非常重要的。 - **Ruby官方文档**:`http://www.ruby-lang.org/zh_CN/ruby` 提供了官方文档和教程资源。 - **Ruby参考手册**:`...

    Ruby+Watir搭建自动化测试框架

    Ruby+Watir搭建自动化测试框架是一种高效且灵活的测试解决方案,尤其适合测试人员进行Web应用的自动化测试。本文将详细介绍如何使用Ruby和Watir构建自动化测试环境,以及这两个工具的关键特性和优势。 Ruby是一种...

    Watir的介绍文档:基于RUBY的web UI自动化测试库

    Watir,全称为“Web Application Testing In Ruby”,是一款基于Ruby语言的开源Web自动化测试框架。它的设计目的是模拟人们在浏览器中的行为,如点击链接、填写表单和按下按钮,并能够检查预期的文本是否出现在页面...

    开放Ruby+watir 自动化测试工具介绍+安装说明

    Watir,是Ruby的一个库,它允许通过编写Ruby代码来控制浏览器,进行端到端的Web应用测试。 ### Ruby安装 首先,我们需要在本地环境中安装Ruby。这可以通过Ruby安装器RVM(Ruby Version Manager)或RBEnv来完成。...

    watir介绍及安装

    Ruby还拥有强大的文本处理能力,适用于各种实用编程任务,并可以通过C语言进行扩展,使其成为各种库的理想前端。 **Watir(Web Application Testing in Ruby)**是基于Ruby的开源自动化测试框架,专门用于Web应用的...

    ruby watir介绍文档

    ### Ruby Watir框架自动化介绍 #### 一、Ruby Watir框架概述 Watir(Web Application Testing In Ruby)是一个用于Web应用程序测试的Ruby库。它提供了一种简单且强大的方法来模拟用户与Web页面的交互行为,进而...

    Ruby-Watir在Ruby中Web应用程序测试

    Ruby-Watir是一种开源自动化测试框架,专门用于在Ruby编程语言中进行Web应用程序的测试。它允许开发者通过编写Ruby代码来模拟用户与浏览器的交互,从而实现端到端的测试。这个工具的名字“Watir”是“Web ...

    watir测试框架介绍

    watir测试框架介绍 watir测试框架介绍 watir测试框架介绍

    ruby+watir自动论坛发帖

    ruby+watir技术实现的论坛发帖机器人,不完善。

    watir Web自动化测试框架 api

    Watir 是一个使用 Ruby 实现的开源Web 自动化测试框架,相对于那些庞大的商业工具来说,它很小巧,也很灵活,提供的功能也足够用。最近抽时间试用了一下,感觉还不错,准备下一步在公司推广使用。因为 Watir 的网站...

    Watir1.6.5(commonwatir+firewatir+watir)+Ruby186-26

    总结起来,"Watir1.6.5(commonwatir+firewatir+watir)+Ruby186-26"是一个包含了不同版本的Watir组件以及Ruby环境的打包下载,为开发者提供了一个完整的自动化测试工具链,便于进行Web应用的测试工作。通过学习和熟练...

    watir安装包之一 ruby1

    此文件太大,压缩成两个part,此为Part1 ,两个文件下载后放一起解压缩即可。 watir本地安装的安装文件共六部分,按照一~六安装即可,每一部分重要的内容在描述里面说明,如有疑问,可以留言。

    自动化测试Watir框架介绍

    自动化测试Watir框架介绍,采用ruby语言,做UI 自动化的不错的帮助文档。

Global site tag (gtag.js) - Google Analytics