一、为什么选择Ruby

【】完全开源。
【】多平台:Ruby可以运行在Linux, UNIX, Windows, MS-DOS, BeOS, OS/..
【】多线程:线程就是指在一个程序中处理若干控制流的功能。与OS提供的进程不同的是,线程可以共享内存空间。
【】完全面向对象。
【】不需要内存管理:具有垃圾回收(Garbage Collect, GC)功能,能自动回收不再使用的对象。
【】解释执行:其程序无需编译即可轻松执行。
【】功能强大的字符串操作/正则表达式。
【】具有异常处理功能。
【】可以直接访问OS:Ruby可以使用UNIX的绝大部分的系统调用。单独使用Ruby也可以进行系统编程。
【】动态类型语言:Ruby的变量没有类型,因此不必为类型匹配而烦恼。
【】动态语言:程序运行中,可以加入熟悉,行为,也可以重写方法。
【】支持操作符重写。
【】支持无限精度的数字。
【】丰富的库函数。
【】用模块进行混合插入(Max-in):Ruby舍弃了多重继承,但拥有混合插入功能。使用模块来超越类的界限来共享数据和方法等。
【】语法简单:它是脚本语言,没有指针,学习曲线比较低。 Ruby吸取了perl的正则表达式,python的简单性可读性,smalltalk的纯面向对象语法和单继承,LISP的无穷嵌套的语法,java的线程…. 二、Ruby下载及安装 下载: 最新稳定的版本Ruby1.9.2 傻瓜安装,下一步下一步... 三、watir-webdriver安装 )必须先完成Ruby的安装;
)打开“运行”,输入cmd进入控制台;
)输入下面代码:
    ruby -v 检查ruby是否是192
    gem -v 检查gem的版本
gem update –system 更新版本
gem install watir 安装watir
    gem install watir-webdriver 安装watir-webdriver
注: 为了让Watir认识中文并操作文件上传,需要做下面的修改:
首先修改C:\ruby\lib\ruby\gems\1.9\gems\watir-xxx\watir\input_elements.rb文件,找到FileField类下的set方法,把原来的替换成
system(“rubyw –e \”require ‘win32ole’; @autoit=WIN32OLE.new(‘AutoItX3.Control’);waitresult=@autoit.WinWait’选择文件’,”,;sleep ;if waitresult==\” –e\”@autoit.ControlSetText’选择文件’,”,’Edit1’,’#’;@autoit.ControlSend’选择文件’,”,’Button2’,”;\” –e \”end\””) 集成eclipse 安装开发工具,此次选择eclipse,加上RDT插件org.rubypeople.rdt-xxxx.zip
eclipse下载地址:http://www.eclipse.org/downloads/
RDT下载地址:http://update1.aptana.org/rdt/3.2/index.html
安装好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语法积累 【】注释与分行:
# 从#开头到行尾是单行注释;
=begin
xxxx
=end #是多行注释 【】分隔符:
;分号:用来分隔一行中的多个语句。
() 圆括号:提高优先级;定义方法时容纳参数列表;
空格:分隔字符:在可省略()的地方,代替()
,逗号:隔开多个参数;
. 点:将对象与它的方法隔开;
:: 紧连的两个冒号:域作用符,将模块(类)与它的常量隔开。 【】关键字:
模块定义:module
类定义:class
方法定义:def ,undef
检查类型:defined?
条件语句:if ,then ,else ,elsif ,case ,when ,unless
循环语句:for ,in ,while ,until ,next ,break ,do ,redo ,retry ,yield
逻辑判断:not ,and ,or
逻辑值和空值:true ,false ,nil
异常处理:rescue ,ensure
对象引用:super ,self
块的起始:begin/end
嵌入模块:BEGIN ,END
文件相关:__FILE__ , __LINE__
方法返回:return
别名:alias
【】运算符:优先级由高到低
[][]= 数组下标 数组元素赋值
** 乘幂
! ~ + - 非 位非 一元加 负号
* / % 乘 除 模
+ - 加 减
>> << 右移 左移
& 位与
^ | 位异或 位或
<= < > >= 小于等于 小于 大于 大于等于
<=> == === =~ != !~ 各种相等判断
&& 短路与
|| 短路或
.. … 区间的开始点到结束点
?: 三元条件运算符
= %= ~= /= -= += |= &= >>= <<= *= &&= ||= **= 各种赋值
defined? 检查类型
not 逻辑非
or and 逻辑或 逻辑与 语言都是相同的,剩下的就不多说了,不懂谷歌不行就百度。 推荐:我感觉最常用的,必须会的 自动化测试用例中常见语法

七、watir语法积累
【】文本框 <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
【】下拉框
<SELECT name=”cert_no”>
<OPTION value=”身份证”>身份证</OPTION>
</SELECT>
方法1:ie.select_list(:name,”cert_no”).select(“身份证”)
方法2:ie.select_list(:name,”cert_no”).clearSelection
【】超链接 <a href = http://www.baidu.com/>google</a>
方法1:ie.link(:text,”word”).click
方法2:ie.link(:url,http://www.baidu.com/).click
【】复选框 <input type = “checkbox” name = “checkme” value = “”>
方法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 = “”>
方法1:ie.checkbox(:name,”checkme”,””).set
方法2:ie.checkbox(:name,”checkme”,””).clear
【】单选框 <input type = “radio” name = “clickme” id = “”>
方法1:ie.radio(:name,”clickme”).set
方法2:ie.radio(:name,”clickme”).clear
【】一般按钮 <input type = “button” name = “clickme” value = “Click Me”>
方法1:ie.button(:value, “Click Me”).click
方法2:ie.button(:name,”clickme”).click
【】submit按钮
<form action = “submit” name = “submitform” method = “post”>
<input type = “submit” value = “Submit”></input>
</form>
方法:ie.button(:value,”Submit”).click
【】图片按钮
<form action =”submit” name = “doitform” method = “post”>
<input type = “image” src = “images/doit.gif” name = “doit”>
</form>
方法:ie.button(:name,”doit”).click
【】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
【】获取隐含对象值 <INPUT type=hidden value=”您的Email” name=”field1”>
方法:values = ie.hidden(:name,’field1’).value
【】获取窗口对象
方法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/) #正则表达式匹配获取
【】URL编码
require ‘cgi’
string = “URL编码”
string = CGI::escape(string)
puts string #转换结果:URL����
【】URL解码
require ‘cgi’
string = “URL����”
string = CGI::(string)
puts string #转换结果:URL解码 八、欢迎加入我们的QQ群 群号:
 

从0到1,教你实现基于Ruby的watir-webdriver自动化测试的更多相关文章

  1. 基于ruby的watir自动化测试 笔记二

    基于ruby的watir自动化测试 笔记一的补充版,新增加了些特殊的控件捕获方法.还在更新中.... attribute_value 获取当前控件的属性 Value = ie.link(:id=> ...

  2. 基于ruby的watir自动化测试 笔记一

    基于Ruby的watir-webdriver自动化测试方案与实施(五)   基于Ruby的watir-webdriver自动化测试方案与实施(四)   基于Ruby的watir-webdriver自动 ...

  3. 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接

    本文原作者:“水晶虾饺”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.引言 好多小白初次接触即时通讯(比如:IM或者消息推送应用)时,总是不 ...

  4. 手把手教你写基于C++ Winsock的图片下载的网络爬虫

    手把手教你写基于C++ Winsock的图片下载的网络爬虫 先来说一下主要的技术点: 1. 输入起始网址,使用ssacnf函数解析出主机号和路径(仅处理http协议网址) 2. 使用socket套接字 ...

  5. 庐山真面目之十一微服务架构手把手教你搭建基于Jenkins的企业级CI/CD环境

    庐山真面目之十一微服务架构手把手教你搭建基于Jenkins的企业级CI/CD环境 一.介绍 说起微服务架构来,有一个环节是少不了的,那就是CI/CD持续集成的环境.当然,搭建CI/CD环境的工具很多, ...

  6. Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员、后台管理员同时登录

    1.登录的实现 登录功能实现起来有哪些常用的方式,大家首先想到的肯定是cookie或session或cookie+session,当然还有其他模式,今天主要探讨一下在Asp.net core 2.0下 ...

  7. Asp.Net Core 2.0 项目实战(11) 基于OnActionExecuting全局过滤器,页面操作权限过滤控制到按钮级

    1.权限管理 权限管理的基本定义:百度百科. 基于<Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员.后台管理员同时登录>我们做过了登录认证, ...

  8. 并发编程概述 委托(delegate) 事件(event) .net core 2.0 event bus 一个简单的基于内存事件总线实现 .net core 基于NPOI 的excel导出类,支持自定义导出哪些字段 基于Ace Admin 的菜单栏实现 第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)

    并发编程概述   前言 说实话,在我软件开发的头两年几乎不考虑并发编程,请求与响应把业务逻辑尽快完成一个星期的任务能两天完成绝不拖三天(剩下时间各种浪),根本不会考虑性能问题(能接受范围内).但随着工 ...

  9. 基于Ruby的watir-webdriver自动化测试方案与实施(五)

    接着基于Ruby的watir-webdriver自动化测试方案与实施(四) http://www.cnblogs.com/Javame/p/4164570.html 继续 ... ... 关于特殊控件 ...

随机推荐

  1. 1、NoSQL概述

    最近抽时间把Redis学了一下,所以就在网上找了一些资料.然后找到尚硅谷-周阳老师的视频教程,觉得里面的讲的挺好.所以就把他视频当中的资料教程整理出来. 单机MySQL的美好时代 在90年代,一个网站 ...

  2. 如何使用Xmanager及VNC登录远程桌面

    如何调用远程桌面,比较常见的有两种方式:Xmanager及VNC 正好今天鼓捣了一下,特整理如下: Xmanager Xmanager的调用也有两种方式: 一.直接在Xshell中调用 这时需设置会话 ...

  3. golang中的类和接口的使用

    类使用:实现一个people中有一个sayhi的方法调用功能,代码如下: type People struct { //.. } func (p *People) SayHi() { fmt.Prin ...

  4. SharePoint 2013 托管导航 无法被开启的解决办法

    在阅读了园子中霖雨的一片博文<SharePoint 2013 托管导航及相关配置>之后,非常想尝试一下SharePoint 2013 中的这个新功能,但是我的网站集包括样式是从2010升级 ...

  5. Oracle RAC客户端tnsnames.ora相关配置及测试

    1.Oracle RAC服务端/etc/hosts部分内容如下 2.查看服务端的local_listener和remote_listener参数 3.客户端tnsnames.ora配置参考 3.1 1 ...

  6. struts2学习笔记--OGNL表达式1

    struts2标签库主要使用的是OGNL语言,类似于El表达式,但是强大得多,它是一种操作对象属性的表达式语言,OGNL有自己的优点: 能够访问对象的方法,如list.size(); 能够访问静态属性 ...

  7. Linux入门

    参考资料:http://www.92csz.com/study/linux/ [Linux系统目录结构] 登录系统后,在当前命令窗口下输入 ls / 你会看到 以下是对这些目录的解释: /bin bi ...

  8. myWaterfall - jQuery瀑布流布局插件

    myWaterfall - jQuery瀑布流布局插件 Demo http://jsfiddle.net/q3011893/p5k2ogy8/embedded/result,html,css,js/ ...

  9. 你的日志组件记录够清晰嘛?--自己开发日志组件 Logger

    现在现成的日志组件实在是太多太多,为什么我还需要自己实现呢????? 需求来源于java的log4j, [07-31 16:40:00:557:WARN : com.game.engine.threa ...

  10. 一步一步开发Game服务器(二)完成登陆,聊天

    我知道这样的文章在博客园已经多的大家都不想看了,但是这是我的系列文章开始,请各位大神见谅了. 多线程,线程执行器,(详见),socket通信相关 (详见) 本人blog相关文章测试代码,示例,完整版s ...