第一个ruby脚本--登陆功能

上一篇 / 下一篇  2009-07-31 15:00:51 / 个人分类:03 学习笔记

  用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  


 


TAG:

mama520hanhan的个人空间 引用 删除 mama520hanhan   /   2014-03-10 10:03:24
你好在吗,初学,一点不懂,如何去取对象的哪个名字
追寻 引用 删除 wanghq081126   /   2012-07-19 17:33:49
很有帮助,帮我解决了一个问题,谢谢啦
追寻 引用 删除 wanghq081126   /   2012-07-19 17:32:51
1
冰艳血魔的个人空间 引用 删除 冰艳血魔   /   2012-05-31 10:56:58
才开始学,非常有用,谢谢
我是丑女 引用 删除 hellen_ma   /   2011-03-11 09:56:36
师奶奶, 有机会徒孙找你聊聊watir哈
candle的个人空间 引用 删除 candle   /   2010-09-01 10:39:12
请问博主,怎么将数据的赋给登陆的参数啊,你上面没有列出这部分的代码啊~~~麻烦了~~
 

评分:0

我来说两句

Open Toolbar