没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
www.gdtesting.com 亿能测试技术 www.automationqa.com
Web 页面功能自动化测试
使用 QTP 进行 Web 页面自动化测试
案例分析 – Discuz!NT 自动化测试
安装和配置 Discuze!NT
登录功能的测试
在 Discuz 论坛的首页面可以进行录制操作,如图所示:
用 QTP 录制的登录、退出脚本如下所示:
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebEdit("username").Click
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebEdit("username").Set "chennengji"
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebEdit("password").SetSecure "4b9f7c4409ed1976092d0fcecf136fdd301b"
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛 -").WebButton(" 登
录").Click
Browser("Discuz!NT ASP.net|论坛 -").Page("Discuz!NT ASP.net|论坛 -").Link("退出").Click
www.gdtesting.com 亿能测试技术 www.automationqa.com
www.gdtesting.com 亿能测试技术 www.automationqa.com
可以看到密码设置是用的 SetSecure 方法,这个方法需要设置密文,不利于修改和参数化,
应该改为用 Set,另外,由于登录后有中转页面,不能马上“退出”,需要加入延时,调整后
的脚本:
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebEdit("username").Click
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebEdit("username").Set "chennengji"
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebEdit("password").Set "123456"
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛 -").WebButton(" 登
录").Click
Wait 5 ' 由于登录后有中转页面,不能马上“退出”,需要加入延时
Browser("Discuz!NT ASP.net|论坛 -").Page("Discuz!NT ASP.net|论坛 -").Link("退出").Click
对于等待重定向页面的处理,可以加入等待延时,也可以直接点击链接让浏览器转向,下
面是重新录制并调整后的脚本(把点击链接让浏览器转向的过程录制下来):
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebEdit("username").Click
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebEdit("username").Set "chennengji"
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebEdit("password").Set "123456"
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛 -").WebButton(" 登
录").Click
Browser("Discuz!NT ASP.net|论坛 -").Page("用户登录 - Discuz!NT ASP.net|论坛").Link("如果
浏览器没有转向, 请点击这里.").Click
Browser("Discuz!NT ASP.net|论坛 -").Page("Discuz!NT ASP.net|论坛 -").Link("退出").Click
Browser("Discuz!NT ASP.net|论坛 -").Page("用户退出 - Discuz!NT ASP.net|论坛").Link("如果
浏览器没有转向, 请点击这里.").Click
当然,这样的脚本还不够健壮,而且也没有完成登录功能的验证,需要加入检查点:
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebEdit("username").Click
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebEdit("username").Set "chennengji"
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebEdit("password").Set "123456"
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛 -").WebButton(" 登
录").Click
If Browser("Discuz!NT ASP.net|论坛 -").Page("用户登录 - Discuz!NT ASP.net|论坛").Link("如
果浏览器没有转向, 请点击这里.").Exist(5) Then
Browser("Discuz!NT ASP.net| 论 坛 -").Page(" 用 户 登 录 - Discuz!NT ASP.net| 论
www.gdtesting.com 亿能测试技术 www.automationqa.com
www.gdtesting.com 亿能测试技术 www.automationqa.com
坛").Link("如果浏览器没有转向, 请点击这里.").Click
Else
Reporter.ReportEvent micWarning,"对象不存在", "Link 对象不存在!"
End If
' 插入检查点,检查是否登录成功
If Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebElement("chennengji").Exist(5) Then
If Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebElement("chennengji").GetROProperty("innerText")="chennengji" Then
Reporter.ReportEvent micPass,"检查登录是否成功", "Pass!"
' 退出
Browser("Discuz!NT ASP.net|论坛 -").Page("Discuz!NT ASP.net|论坛 -").Link("退出")
Click
Browser("Discuz!NT ASP.net| 论 坛 -").Page(" 用 户 退 出 - Discuz!NT ASP.net| 论
坛").Link("如果浏览器没有转向, 请点击这里.").Click
Else
Reporter.ReportEvent micFail,"检查登录是否成功", "Fail!"
End If
Else
Reporter.ReportEvent micFail,"对象不存在", "WebElement 对象不存在!"
End If
在脚本中,加入了登录后的页面检查,通过检查“如果浏览器没有转向, 请点击这里.”这个
链接是否存在(Exist),来判断是否去到了重定向等待页面。后面,再插入检查点,检查
是否登录成功,通过 GetROProperty 获取登录后页面中的用户名这个 WebElement 对象(如
图所示)的“innerText”属性的值,判断是否等于登录输入的用户名。这样就相对完整地实
现了登录功能的测试脚本设计。
* 注:这里也可以用 QTP 的检查点(CheckPoint)来检查登录是否成功,但是 QTP 的
CheckPoint 需要在录制过程中插入,而且缺乏灵活性,不易于后期修改。
参数化登录功能的脚本
前面实现了一个基本的登录功能的脚本设计,但是还存在很多问题,其中一个就是登录用
户名和密码这些测试数据都是写死在脚本中的测试步骤,不利于后期维护脚本,为此,需
要对脚本进行参数化更改:
Dim UserName
www.gdtesting.com 亿能测试技术 www.automationqa.com
www.gdtesting.com 亿能测试技术 www.automationqa.com
Dim PassWord
UserName = "chennengji"
PassWord = "123456"
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebEdit("username").Click
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebEdit("username").Set UserName
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebEdit("password").Set PassWord
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛 -").WebButton(" 登
录").Click
If Browser("Discuz!NT ASP.net|论坛 -").Page("用户登录 - Discuz!NT ASP.net|论坛").Link("如
果浏览器没有转向, 请点击这里.").Exist(5) Then
Browser("Discuz!NT ASP.net| 论 坛 -").Page(" 用 户 登 录 - Discuz!NT ASP.net| 论
坛").Link("如果浏览器没有转向, 请点击这里.").Click
Else
Reporter.ReportEvent micWarning,"对象不存在", "Link 对象不存在!"
End If
' 插入检查点,检查是否登录成功
If Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebElement("chennengji").Exist(5) Then
If Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebElement("chennengji").GetROProperty("innerText")=UserName Then
Reporter.ReportEvent micPass,"检查登录是否成功", "Pass!"
' 退出
Browser("Discuz!NT ASP.net|论坛 -").Page("Discuz!NT ASP.net|论坛 -").Link("退出")
Click
Browser("Discuz!NT ASP.net| 论 坛 -").Page(" 用 户 退 出 - Discuz!NT ASP.net| 论
坛").Link("如果浏览器没有转向, 请点击这里.").Click
Else
Reporter.ReportEvent micFail,"检查登录是否成功", "Fail!"
End If
Else
Reporter.ReportEvent micFail,"对象不存在", "WebElement 对象不存在!"
End If
脚本中,把使用到用户名和密码的测试步骤中的数据都替换成用最前面定义的变量
UserName 和 PassWord,这样,如果下次运行需要更改登录账号,只需要修改代码前面的
数据即可。
* 注意,这种用变量进行参数化的做法不是最好的,也不是最终的做法,后面我们还会回
来修改,让脚本的测试数据与脚本测试步骤分离开来。
www.gdtesting.com 亿能测试技术 www.automationqa.com
www.gdtesting.com 亿能测试技术 www.automationqa.com
模块化脚本设计
再来分析一下我们的登录脚本,我们会发现,这个简单的登录功能的测试还不够理想,例
如,我们需要预先打开浏览器,导航到 Discuz 的主页面,这样登录功能的脚本才能正确执
行。为此,我们应该再添加启动浏览器、导航等脚本:
StartNewBrowser
NavigateTo
Login
CloseBrowser
Sub StartNewBrowser
SystemUtil.Run "Iexplore.exe"
End Sub
Sub NavigateTo
Browser("Discuz!NT ASP.net|论坛 -").Navigate "http://127.0.0.1:88/dnt3/index.aspx"
End Sub
Sub Login
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebEdit("username").Click
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebEdit("username").Set "chennengji"
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebEdit("password").Set "123456"
Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论坛 -").WebButton("登
录").Click
If Browser("Discuz!NT ASP.net| 论 坛 -").Page(" 用 户 登 录 - Discuz!NT ASP.net| 论
坛").Link("如果浏览器没有转向, 请点击这里.").Exist(5) Then
Browser("Discuz!NT ASP.net| 论 坛 -").Page(" 用 户 登 录 - Discuz!NT ASP.net| 论
坛").Link("如果浏览器没有转向, 请点击这里.").Click
Else
Reporter.ReportEvent micWarning,"对象不存在", "Link 对象不存在!"
End If
' 插入检查点,检查是否登录成功
If Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebElement("chennengji").Exist(5) Then
If Browser("Discuz!NT ASP.net| 论 坛 -").Page("Discuz!NT ASP.net| 论 坛
-").WebElement("chennengji").GetROProperty("innerText")="chennengji" Then
www.gdtesting.com 亿能测试技术 www.automationqa.com
剩余27页未读,继续阅读
资源评论
gdtesttng
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功