【使用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,请求验证码接口,最后提交,登录成功后注销,关闭浏览器.此脚本还不完善,仅仅起一个抛砖引玉的效果.
和大家一起学习...
且行且珍惜...