【使用Ruby进行Web应用测试】---使用watir组件登陆imzc博客

  由于登录部分有验证码,为了使用方便测试,因此留了一个借口,当通过http请求该页面时,会返回验证码的数字.

比如请求http://imzc.net/get_verifycode_for_watir.php?debug=1而获得当前的验证码.

在sablog中,验证码是保存在$_SESSION中的,因此,直接显示出来即可,下面是此脚本的代码:

 

  <?php  
session_start();
header("Content-type: text/html; charset=gb2312");

//get_verifycode_for_watir.php?checkName=zhouchuan_debug
if(isset($_GET['debug'])&&$_GET['debug']=='1')
echo $_SESSION['code'];
?>

 

需要注意的是,要先请求登录页面,然后用同一个浏览器来请求此接口,否则得到的验证码不是真实的.

下面直接列出脚本,一步一步的讲解.

 

  require 'watir'  
  require 'logger'  
    
  #实例化一个日志记录类 
  log = Logger.new(STDOUT)  
  #实例化一个IE浏览器对象  
  ie = Watir::IE.new  
  #访问网站  
  ie.goto 'http://imzc.net'  
  #最大化  
  ie.maximize()    
  #将该IE提到窗口最前面  
  ie.bring_to_front()   
  #  找到登陆连接  
  ie.link(:href,/login/).click  
    
  #  找到 username,password 文本输入框  
  ie.text_field(:name,'username').set 'test'  
  ie.text_field(:name,'password').set 'testpwd'  
    
  #  开始取得验证码  
  ie2 = Watir::IE.new  
  #  ie2.bring_to_front()  
  ie2.minimize()    
  ie2.goto 'http://imzc.net/get_verifycode_for_watir.php?debug=1'  
  #取得返回的文本  
  verifycode =  ie2.text()  
  #关闭此浏览器  
  ie2.close  
    
  #  可以直接执行JavaScript代码  
  ie.execute_script("alert('#{verifycode}');")   
  #  设置验证码  
  ie.text_field(:name,'clientcode').set verifycode  
  #  由于sablog登陆表单没有表名,提交按钮不是普通的input type="submit",也没有名称,  
  #且本页面就一个method="post"属性的表单,因此,使用此属性来做提交  
  ie.form(:method,'post').submit  
    
  #先等待5秒  
  sleep 5  
  # 开始登出  
  # 加入异常处理机制  
  begin  
    #是否存在这个链接,存在则不会引起异常.  
    if ie.link(:href,/logout/).exist?   
      puts 'login ok,then logout~';  
      ie.link(:href,/logout/).click   
    end  
  rescue => err  
    puts 'Error had happend in login ...';  
    log.fatal("Caught exception:")  
    log.fatal(err)  
  end  
  # 关闭浏览器  
  ie.close  

 

执行此脚本时,可以看到先打开了IE浏览器,访问博客主页,进入登录页面,输入设定的用户名和密码.

然后再打开一个IE,请求验证码接口,最后提交,登录成功后注销,关闭浏览器.此脚本还不完善,仅仅起一个抛砖引玉的效果.

和大家一起学习...

posted @ 2010-05-29 22:27  O(∩_∩)O川zc  阅读(8290)  评论(0编辑  收藏  举报