• 从0到1,教你实现基于Ruby的watir-webdriver自动化测试


    一、为什么选择Ruby1】完全开源。
    【2】多平台:Ruby可以运行在Linux, UNIX, Windows, MS-DOS, BeOS, OS/2..
    【3】多线程:线程就是指在一个程序中处理若干控制流的功能。与OS提供的进程不同的是,线程可以共享内存空间。
    【4】完全面向对象。
    【5】不需要内存管理:具有垃圾回收(Garbage Collect, GC)功能,能自动回收不再使用的对象。
    【6】解释执行:其程序无需编译即可轻松执行。
    【7】功能强大的字符串操作/正则表达式。
    【8】具有异常处理功能。
    【9】可以直接访问OS:Ruby可以使用UNIX的绝大部分的系统调用。单独使用Ruby也可以进行系统编程。
    【10】动态类型语言:Ruby的变量没有类型,因此不必为类型匹配而烦恼。
    【11】动态语言:程序运行中,可以加入熟悉,行为,也可以重写方法。
    【12】支持操作符重写。
    【13】支持无限精度的数字。
    【14】丰富的库函数。
    【15】用模块进行混合插入(Max-in):Ruby舍弃了多重继承,但拥有混合插入功能。使用模块来超越类的界限来共享数据和方法等。
    【16】语法简单:它是脚本语言,没有指针,学习曲线比较低。
    
     Ruby吸取了perl的正则表达式,python的简单性可读性,smalltalk的纯面向对象语法和单继承,LISP的无穷嵌套的语法,java的线程….
    
    二、Ruby下载及安装
    
    下载: 最新稳定的版本Ruby1.9.2
    
    傻瓜安装,下一步下一步...
    
    三、watir-webdriver安装
    
    1)必须先完成Ruby的安装;
       2)打开“运行”,输入cmd进入控制台;
       3)输入下面代码:
        ruby -v 检查ruby是否是192
        gem -v 检查gem的版本
          gem update –system 更新版本
          gem install watir 安装watir
        gem install watir-webdriver 安装watir-webdriver
    注: 为了让Watir认识中文并操作文件上传,需要做下面的修改:
          首先修改C:
    ubylib
    ubygems1.9gemswatir-xxxwatirinput_elements.rb文件,找到FileField类下的set方法,把原来的替换成
           system(“rubyw –e ”require ‘win32ole’; @autoit=WIN32OLE.new(‘AutoItX3.Control’);waitresult=@autoit.WinWait’选择文件’,”,15;sleep 1;if waitresult==1” –e”@autoit.ControlSetText’选择文件’,”,’Edit1’,’#’;@autoit.ControlSend’选择文件’,”,’Button2’,”;” –e ”end””)
    
    
    集成eclipse
    
    
    1 安装开发工具,此次选择eclipse,加上RDT插件org.rubypeople.rdt-xxxx.zip
    2 eclipse下载地址:http://www.eclipse.org/downloads/
    3 RDT下载地址:http://update1.aptana.org/rdt/3.2/index.html
    4 安装好eclipse之后,打开eclipse面板,点Help -> Software Updates -> Available Software -> Add Site -> Archive -> 选中下载好的org.rubypeople.rdt-xxx.zip -> 点OK按钮。
    
    
    四、小试牛刀
    
    模拟打开浏览器,进入http://www.hao123.com/,在输入框输入"ruby",点击“百度一下”。
    
       require 'watir-webdriver'
         @@b = Watir::Browser.new
         @@b.goto('http://www.hao123.com/')
         @@b.text_field(:name, 'word').set('ruby')
         @@b.button(:value, '百度一下').click
    
    将代码拷贝到一个test.rb文件中,打开cmd,执行ruby test.rb 运行。
    
    无误的话,将会弹出浏览器,自动模拟以上操作。
    
    注:watir-webdriver默认支持火狐浏览器,所以运行前先确保可以打开火狐浏览器。
    
    五、自动化测试方案与实施
    
    前两篇:
    软件自动化测试的概述         
      *Web自动化测试的方案设计
    功能方案设计
    业务方案设计
    自动化测试脚本的录制和编写
      *自动化测试的执行和具体实现
      *测试操作和测试数据的回收
    第三篇:(重点)
    编写脚本首先要学会捕获元素,接下来就要学习页面元素的捕获。
    第四篇:(升级)
    具体将框架的设计与理念
    第五篇:(难点)
    关于特殊控件捕获,异常控件分析,到页面各种属性的捕获方式。
     
    
    基于Ruby的watir-webdriver自动化测试方案与实施(一)
    
    基于Ruby的watir-webdriver自动化测试方案与实施(二)
    
    基于Ruby的watir-webdriver自动化测试方案与实施(三)
    
    基于Ruby的watir-webdriver自动化测试方案与实施(四)
    
    基于Ruby的watir-webdriver自动化测试方案与实施(五)
    
     
    
    六、Ruby语法积累1】注释与分行:
         #  从#开头到行尾是单行注释;
         =begin
         xxxx
         =end  #是多行注释
    
    【2】分隔符:
        ;分号:用来分隔一行中的多个语句。
        () 圆括号:提高优先级;定义方法时容纳参数列表;
          空格:分隔字符:在可省略()的地方,代替()
        ,逗号:隔开多个参数;
        .  点:将对象与它的方法隔开;
        :: 紧连的两个冒号:域作用符,将模块(类)与它的常量隔开。
    
    【3】关键字:
        模块定义:module
        类定义:class
        方法定义:def ,undef
        检查类型:defined?
        条件语句:if ,then ,else ,elsif ,case ,when ,unless
        循环语句:forinwhile ,until ,next ,breakdo ,redo ,retry ,yield
        逻辑判断:not ,and ,or
        逻辑值和空值:truefalse ,nil
        异常处理:rescue ,ensure
        对象引用:super ,self
        块的起始:begin/end
        嵌入模块:BEGIN ,END
        文件相关:__FILE__ , __LINE__
        方法返回:return
        别名:alias
    【4】运算符:优先级由高到低
        [][]=      数组下标 数组元素赋值
        **        乘幂
        ! ~ + -     非 位非 一元加 负号
        * / %      乘 除 模
        + -        加 减
        >> <<      右移 左移
        &         位与
        ^ |        位异或 位或
        <= < > >=   小于等于 小于 大于 大于等于
        <=> == === =~ != !~  各种相等判断
        &&        短路与
        ||         短路或
        .. …        区间的开始点到结束点
        ?:         三元条件运算符
        = %= ~= /= -= += |= &= >>= <<= *= &&= ||= **=   各种赋值
        defined?    检查类型
        not        逻辑非
        or and      逻辑或 逻辑与
    
    语言都是相同的,剩下的就不多说了,不懂谷歌不行就百度。
    
    推荐:我感觉最常用的,必须会的
    
    自动化测试用例中常见语法
    
    七、watir语法积累1】文本框 <INPUT id=”email” name=”_fmu.u._0.e” value=””/>
        方法1:ie.text_field(:id,’email’).set(“文本内容”)
        方法2:ie.text_field(:name, ‘email’).set(“文本内容”)
        方法3:ie.text_field(:name, “email”).clear
    【2】下拉框 
        <SELECT name=”cert_no”>
        <OPTION value=”身份证”>身份证</OPTION>
        </SELECT>
        方法1:ie.select_list(:name,”cert_no”).select(“身份证”)
        方法2:ie.select_list(:name,”cert_no”).clearSelection
    【3】超链接 <a href = http://www.baidu.com/>google</a>
        方法1:ie.link(:text,”word”).click
        方法2:ie.link(:url,http://www.baidu.com/).click4】复选框 <input type = “checkbox” name = “checkme” value = “1”>
        方法1:ie.checkbox(:name,”checkme”).set
        方法2:ie.checkbox(:name,”checkme”).clear
        方法3:values = ie.checkbox(:name,”checkme”).value
        多个同名复选框的处理:
        <input type = “checkbox” name = “checkme” value = “2”>
        方法1:ie.checkbox(:name,”checkme”,”2”).set
        方法2:ie.checkbox(:name,”checkme”,”2”).clear
    【5】单选框 <input type = “radio” name = “clickme” id = “1”>
        方法1:ie.radio(:name,”clickme”).set
        方法2:ie.radio(:name,”clickme”).clear
    【6】一般按钮 <input type = “button” name = “clickme” value = “Click Me”>
        方法1:ie.button(:value, “Click Me”).click
        方法2:ie.button(:name,”clickme”).click
    【7】submit按钮
        <form action = “submit” name = “submitform” method = “post”>
        <input type = “submit” value = “Submit”></input>
        </form>
        方法:ie.button(:value,”Submit”).click
    【8】图片按钮
        <form action =”submit” name = “doitform” method = “post”>
        <input type = “image” src = “images/doit.gif” name = “doit”>
        </form>
        方法:ie.button(:name,”doit”).click
    【9】Form中无按钮
        <form action = “login” name = “loginform” method = “get:>
        <input name = “username” type =”text”></input>
        </form>
        方法1:ie.form(:name,”loginform”).submit
        方法2:ie.form(:action,”login”).submit
    【10】获取隐含对象值 <INPUT type=hidden value=”您的Email” name=”field1”>
        方法:values = ie.hidden(:name,’field1’).value
    【11】获取窗口对象
        方法1:ie2 = Watir::IE.attach(:url,’http://www.google.cn/’) #根据url获取
        方法2:ie3 = Watir::IE.attach(:title,’Google’)  #根据窗口标题获取
        方法3:ie4 = Watir::IE.attach(:title, /google.cn/) #正则表达式匹配获取
    【12】URL编码
        require ‘cgi’
        string = “URL编码”
        string = CGI::escape(string)
        puts string   #转换结果:URL����
    【13】URL解码
        require ‘cgi’
        string = “URL����”
       string = CGI::(string)
       puts string   #转换结果:URL解码
    
    八、欢迎加入我们的QQ群
    
    群号:160409929
    
     
     
  • 相关阅读:
    #研发解决方案介绍#基于持久化配置中心的业务降级
    #研发解决方案介绍#Tracing(鹰眼)
    #研发解决方案介绍#Recsys-Evaluate(推荐评测)
    穷追不舍、事故入手和倒逼
    职场的真相——七句话
    被小伙伴们吓哭了:可怕的命令
    适用于研发基层员工的十个行为模式
    研发阿米巴组织的运行逻辑
    技术总监是干什么的?
    大学教给了我们什么(二)
  • 原文地址:https://www.cnblogs.com/Javame/p/4310656.html
Copyright © 2020-2023  润新知