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