教材示例实践之一

 下面是模拟书本上的示例进行实际操作时遇到问题后得到的一些感悟:

 

第一个示例要求如下:

打开IE浏览器,再从51testing网站的主页跳转到51testing网站的论坛。

systemUtil.Run "C:\Program Files (x86)\Internet Explorer\iexplore.exe","www.51testing.com","",""
Browser("micClass:=Browser").Navigate("bbs.51testing.com")
Browser("micClass:=Browser").Page("micClass:=Page").Sync 

上面虽然仅仅是3行代码,但是运行成功颇费了一段时间。

1. 一定要先打开QTP,再打开IE浏览器,这样SPY功能才能识别到IE的控件。因为安装完QTP之后,每次打开IE,浏览器会自动加载BHOManager,而QTP在IE中识别对象是依靠一个叫BHOManager Class的动态链接库来完成的,如果是先打开IE再打开QTP,QTP就不能成功读到BHOManager这个动态链接库而导致QTP识别对象失败。

2. 需要设置Record and Run Settings里Web的运行方式为:Record and run test on any browser

3. systemUtil.Run 如果不指定要运行的浏览器地址,有可能主动打开的不是IE,而是360之类的浏览器。可以查看help文档,阅读此方法的使用参数如何设置。

4. 后面2句是描述性编程,不需要把浏览器控件添加到对象库。如果添加了,运行时会报错:在对象库中找不到你所描述的对象。

 

第二个示例要求如下

1. 启动IE并进入51testing首页

2. 点击《软件测试论坛》链接,检查当前是否论坛页面

3. 关闭51testing首页

4. 论坛页面内点击《QuickTest Pro》版块链接

5. 点击该板块页面中<51testing软件测试论坛>链接,在出现的下拉框中点击<我要做专家>的链接

6. 在《我要做专家》页面中搜索2个链接,是否存在

 

最后的成品代码如下:

'启动IE并进入51testing首页
systemUtil.Run "C:\Program Files (x86)\Internet Explorer\iexplore.exe","www.51testing.com","",""

'点击《软件测试论坛》链接,检查当前是否论坛页面
Browser("51Testing软件测试网").Page("51Testing软件测试网-主页").Link("软件测试论坛").Click
Browser("51Testing软件测试论坛").Page("51Testing软件测试论坛-主页").Sync

checkTitle=Browser("51Testing软件测试论坛").Page("51Testing软件测试论坛-主页").GetROProperty("title")

If instr(checkTitle,"论坛") <> 0 Then
    Reporter.ReportEvent micPass,"step 2","passed"
else
    Reporter.ReportEvent micFail,"step 2","fail"
End If

'关闭51testing首页
'Browser("51Testing软件测试网").Page("51Testing软件测试网-主页").Sync
Browser("51Testing软件测试网").Close     '注解1

'论坛页面内点击《QuickTest Pro》版块链接
Browser("51Testing软件测试论坛").Page("51Testing软件测试论坛-主页").Link("[QuickTest Professional]").Click
wait 2

'点击该板块页面中<51testing软件测试论坛>链接,在出现的下拉框中点击<我要做专家>的链接
Browser("[QuickTest Professional]").Page("[QuickTest Professional]").Link("我要做专家").Click       '注解2

'在《我要做专家》页面中搜索2个链接,是否存在
Set oDesc = Description.Create()   '创建properties对象
oDesc("micClass").value = "Link"
Set Lists =Browser("我要做专家 - 51Testing软件测试论坛").Page("我要做专家 - 51Testing软件测试论坛").WebElement("我要做专家  类型 主题: 全部 精华 |").ChildObjects(oDesc)    '注解3

NumberOfLists = Lists.Count()
mark = 0
Find1 = "【你来问我来答第48期】:探讨数据库相关的开发和测试技术"
Find2 = "[你问我来答第6期]:软件测试之功能测试(已结束)"

For i = 0 To NumberOfLists - 1
    LinkName = trim(Lists.item(i).GetRoProperty("innertext"))    '注解4
    'msgbox linkName
    If LinkName = Find1 or LinkName = Find2 Then
        mark = mark + 1
    End If

    If mark = 2 Then     '已经找到
        Reporter.ReportEvent micPass,"found","Passed"
        Exit for
    End If

    If i = NumberOfLists - 1 Then   '没找到也写进报告里
        Reporter.ReportEvent micFail,"not found","Failed"
    End If
Next

'释放对象,从最里面一层开始释放直到最外面一层
Set oDesc = nothing        
Set lists = nothing

 

解释几点:

1. 进行非描述性编程时每一个用到的对象都要添加到对象库,否则会出现对象无法识别。

 

2. 注解1中那一行代码,如果你的IE设置不对,就会执行失败。

    假如你的IE打开链接是在当前窗口的新选项卡,那么51testing软件测试网首页和软件测试论坛是在同一个browser下的,所以Browser("51Testing软件测试网")识别失败。你需要把你的IE选项改为:

当他们是在2个不同的窗口下打开时,Browser("51Testing软件测试网").Close才能执行成功。

 

3. 注解2    链接<我要做专家>需要添加到对象库,这里有个必须要提一下的技巧,因为这个链接是点击<51testing软件测试论坛>后才出现在下拉框中的。如下图:

    我们都知道,当使用SPY或者对象库捕获对象时,一旦点击白色手指后就只能抓取对象而无法进行其他任何操作了。但其实点击了白色手指之后,仍然可以通过2种模式切换操作,使得切换后可以停止对控件的抓取,并可以对被测对象进行操作。

A. 半操作模式--CTRL键   支持鼠标点击操作  

  使用spy或对象库捕获对象后,可以看到鼠标光标是手指状态,此时也是捕获对象的状态。这个时候是不可以进行任何操作的,只能抓取想要的对象。而当我们按住CTRL键不放,就可以做点击操作了。如上图,鼠标光标是手指状态时,我们按住CTRL键,鼠标点击<51testing软件测试论坛>链接,等下拉框出来后,放开CTRL键,再点击<我要做专家>链接,就可以成功地把这个链接加入对象库了。

B.全操作模式--CTRL+ALT键  支持鼠标点击和键盘输入

  在处于抓取对象模式的情况下按住CTRL键不放,然后按下ALT键,紧接着先松开CTRL键,再松开ALT键。这样就切换到全操作模式了。比如你可以在百度输入框中输入数据,等模糊匹配下拉选项框出现后,再点击CTRL键然后松开,就返回到抓取对象模式,你再点击想要的下拉选项,就可以完成抓取模糊匹配下拉框对象。

 

4. 注解3   因为一个页面里有很多个link对象,我们不可能把它们全都添加到对象库中,然后一个个进行匹配。这时候我们要善于将对象库编程与描述性编程混搭。Description对象可以返回包含一组property对象的properties集合对象。property对象由属性名和值组成。

  这里把link对象的父对象扩展到WebElement("我要做专家  类型 主题: 全部 精华 |")是因为整个页面的link太多,细化到我们要查找的link所在的最接近父对象是提高查找效率的方法之一。

 

5. 注解4   这是遍历页面中的link对象,取得它的运行时innertext属性,来跟目标链接进行对比。

       

左图是注解4中用到的innertext。右图是本次示例中对象库的内容。

转载于:https://www.cnblogs.com/bangbangjiang/p/3848736.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值