第三个示例要求如下:
前提条件:用户已经登录51testing网站并进入“我的个人空间”,然后点击“日志”,进入“日志”页面。
详细要求:
1. 点击“发布新日志按钮”,进入日志发布页面
2. 填写所有日志材料,并且测试:
A.标题自动生成功能
B.访问密码是否跟设置的一致
最后的成品代码如下:
Browser("邦邦酱好 日志 - 邦邦酱好的个人空间 -").Page("邦邦酱好 日志 - 邦邦酱好的个人空间 -").Link("发布新日志").Click Browser("个人空间管理").Page("个人空间管理").Sync '等待网页加载完成 dateArray = Date 'QTP的保留函数Date 'msgbox dateArray 查看系统生成的日期是2014/7/17还是2014-7-17 dateArray = split(dateArray, "/") tYear = dateArray(0) tMonth =dateArray(1) tDay = dateArray(2) If tMonth < 10 Then tMonth = "0" & tMonth End If If tDay < 10 Then tDay = "0" & tDay End If '嵌套日期,生成期望的标题 expSubject = "日志 [" & tYear & "年" & tMonth &"月" & tDay & "日]" '注意引号是英文符号,否则会出错。看不出问题可以把它们复制到文本中看。 msgbox expSubject With Browser("个人空间管理").Page("个人空间管理") '注解1 .Image("用日期生成标题").Click .WebList("系统分类").Select "软件测试技术" .WebList("个人分类").Select "aaa" .Frame("Frame").WebElement("内容").Object.innerText = "QTP自动化测试领航" '注解2 .WebEdit("密码").Set "123123" actSubject = .WebEdit("标题").GetROProperty("value") actPwd = .WebEdit("密码").GetROProperty("value") 'msgbox actSubject 'msgbox actPwd If actSubject = expSubject and actPwd = "123123" Then Reporter.ReportEvent micPass,"test success","Passed" else Reporter.ReportEvent micFail,"test fail","Fail" ExitTest End If .WebButton("保存到私人箱").Click End With
解释几点:
1. 所用到的对象库如图:
2. 注意引号的类型,必须是英文字符,否则会出现”Expected expression“错误。如果实在看不出问题,可以把那一行复制到文本文件中查看,文本文件下,中文和英文的双引号是有很大区别的。
3. 注解1 使用with将所有会被复用的代码提炼出来,这样整个脚本就显得非常清晰了。
4. 注解2 WebEdit控件输入字符是用封装好的Set方法或者调用自身接口object.value。但是对于WebElement控件,要使用Object.innerText方法。
WebElement控件的使用频率比较高,但是一般用于验证某个特征是否成立。如下:
oExist = Browser("个人空间管理").Page("个人空间管理").Frame("Frame").WebElement("内容").Exist(2) '验证时间为2秒 If not oExist Then ExitTest End If
第四个示例要求如下:
前提条件:登陆51testing软件测试论坛并进入【QuickTest Professional】版块,点击【发帖】按钮,选择“发新话题”,在“发新话题”对话框中点击“高级模式”链接,进入下图:
详细要求:
1. 验证”发帖选项“下的两个webcheckbox对象“Html代码”和“img代码”是否不可点击,并且后者默认已选上。
2. 反选“关注此主题的回复”和“使用个人签名”,并做验证。
最后的成品代码如下:
with Browser("[QuickTest Professional]").Page("[QuickTest Professional]") ' 步骤1:检查Html代码和ing代码的checkbox disabled1 = trim(.WebCheckBox("Html代码").Object.disabled) '注解1 checked1 = trim(.WebCheckBox("Html代码").Object.checked) disabled2 = trim(.WebCheckBox("img代码").GetRoProperty("disabled")) '同注解1 checked2 = trim(.WebCheckBox("img代码").GetRoProperty("checked")) 'msgbox disabled1 '注解2 'msgbox checked1 'msgbox disabled2 'msgbox checked2 Dim vTrue '声明 vTrue= "True" ' 赋值 Dim vFalse vFalse= "False" If disabled1 = vTrue and disabled2 = "1" and checked1 = vFalse and checked2 = "1" Then reporter.ReportEvent micPass,"check1 passed","passed" else reporter.ReportEvent micFail, "check1 fail","failed" End If ' 步骤2 :反选“关注此主题的新回复” 和“使用个人签名” .WebCheckBox("关注回复").set "OFF" ' 注解3 .Object.checked = vFalse 此方法不起作用 .WebCheckBox("个人签名").set "ON" ' ON 勾选 OFF取消勾选 checked3 = trim(.WebCheckBox("关注回复").Object.checked) checked4 = trim(.WebCheckBox("个人签名").Object.checked) msgbox checked3 msgbox checked4 If checked3 = vFalse and checked4 = vTrue Then reporter.ReportEvent micPass,"check2 passed","passed" else reporter.ReportEvent micFail, "check2 fail","failed" End If end with
解释几点:
1. 注解1 这里使用了运行时对象的自身接口属性和对象的封装属性。这里使用的2种获取属性的方法是结果上是一样的。
封装属性GetRoProperty("disabled") 只能获取属性的值,不能修改实际运行时的对象,而调用自身接口就可以。
2. 注解2 webcheckbox是一个比较麻烦的控件,往往不能只单纯地操作它,代码表面上操作它并代表实际上就一定被操作了。所以操作以后一定要去检查一下。
3. 注解3 开始调用自身接口去修改对象的属性,但是试了几次都不成功。估计是IEQTP不支持我这个IE9。具体原因暂时没有找到。网上说的类似原因是:firefox下可以通过checked="unchecked"来不选中,但IE不支持。
最后只有使用封装好的Set方法。不知道怎么使用set方法可以使用帮助文档,里面有详细的说明和例子。