用ruby进行自动化测试学习的第一步:
目标:编写登陆功能的脚本,最简单的方式
脚本:
require 'watir'
ie = Watir::IE.new
ie.goto('http://*****')
ie.text_field(:name, 'username').set('邵菲')
ie.text_field(:name, 'password').set('sf111111')
ie.button(:name, 'Submit').click
sleep(3)#点击登录按钮后登陆需要一点时间,所以最好加上停顿的时间
if ie.contains_text("******") #判断页面是否包含相应文字
puts "登陆成功"
else
puts "登陆失败"
end
ie.close
心得:
1、最开始编写ruby脚本,请不要使用类。(虽然用watirerecorder去录制的时候默然是以类的形式展示的)
2、watirerecorder录制的脚本你是要及时进行修改的,用这个录制只是方便知道各对象ID
======================华丽丽的分隔线===========================
目标:编写登陆功能的脚本,将登陆写成一个具体的方法,通过调用的方式去实现
脚本:
require 'watir'
#登陆的方法
class Login_counter
def initialize(username,password,outputt)#初始化参数
@username,@password,@outputt=username,password,outputt
end
def Login_sf
$ie.text_field(:name, 'username').set(@username)
$ie.text_field(:name, 'password').set(@password)
$ie.button(:name, 'Submit').click
sleep(3)
if $ie.contains_text(@outputt) #判断页面是否包含相应文字
puts "登陆成功"
else
puts "登陆失败"
end
end
end
$ie = Watir::IE.new
$ie.goto('http://counter.sit.alipay.net/logon.htm')
username="邵菲"
password="sf111111"
utputt="您现在登录的是支付宝结算中心业务平台"
f=Login_counter.new(username,password,outputt)
f.Login_sf
$ie.close
心得:
1、因为ruby是从上向下执行脚本内容的所以类方法定义需要在调用之前去定义
2、ie变量是局部变量,在class里是无法调用的,需要用全局变量$ie
=====================华丽丽的分割线===============
目标:通过测试数据驱动的方式去实现登陆自动化测试
方法:将测试数据存于excel中,将excel的数据读取到数组,通过取数组值赋参数
脚本:
require 'watir'
require 'jcode'
require 'win32ole'
$KCODE = 'e'
#----------------------要想读取中文就需要加上以下脚本------------------------------------
#require 'jcode'
#$KCODE='e' # 将汉字代码设为EUC。在Windows中是 's'
#print 'abcdef'.tr( 'a-z', 'A-Z' ), "\n"
#----------------------------------------------------------
#-----------------------------登陆的方法
class Login_counter
def initialize(username,password,outputt)
@username,@password,@outputt=username,password,outputt
end
def Login_sf
$ie.text_field(:name, 'username').set(@username)
$ie.text_field(:name, 'password').set(@password)
$ie.button(:name, 'Submit').click
sleep(3)
if $ie.contains_text(@outputt) #判断页面是否包含相应文字
puts "登陆成功"
else
puts "登陆失败"
end
end
end
#-------------------------在这里需要加入读取excel的方法
excel = WIN32OLE::new('excel.Application')
workbook = excel.Workbooks.Open('C:\Documents and Settings\wb-shaof\桌面\ruby\testdata.xls')
worksheet = workbook.Worksheets(1) #定位到第一个sheet
worksheet.Select
#将excel的值读入到一个数组中
line = '1'
data = []
while worksheet.Range("a#{line}")['Value']
data << worksheet.Range("a#{line}:d#{line}")['Value']#<<为连接符,对数组来是说增加元素.这里的data为三维数组,最开始初始化的时候已经是数组
line.succ! #succ函数为返回下一个值,和line=line+1(前提:line=1)效果一样
end
excel.Quit #退出excel
p data
#-----------------------------------取出data数组的值,赋给登陆功能的各个参数,然后循环去取
#-------------------------------
$ie = Watir::IE.new
$ie.goto('http://counter.sit.alipay.net/logon.htm')
username="邵菲"
password="sf111111"
utputt="您现在登录的是支付宝结算中心业务平台"
f=Login_counter.new(username,password,outputt)
f.Login_sf
$ie.close