qtp如何测试弹出层? 高手 快来帮忙
购物车是鼠标放到上面就会弹出页面的了用QTP怎么知道里面有多少张单?
有多少种商品
里面各价格之和是否正确,要是想删除第二张单要怎么删除?
总价大大于1000元时,随机删除几张单,直到总价少于1000?
高手 快来帮忙 这问题太多 还挺难 先说第一个
我在京东上做的实验 你根据你们项目决定
1.把数字那个对象加入对象库,改名
2.对象库里的innerText属性 改为正则表达式 \d
3.
msgbox Browser("奶粉 - 商品搜索 - 京东").Page("奶粉 - 商品搜索 - 京东").WebElement("去购物车结算").GetROProperty("innertext")
我添加的时候数字是4
后来我又加了2个商品 所以是6
如果不使用正则就找不到对象(这是关闭智能识别的时候) 删除第二个很简单 你就直接把第二个删除 加入对象库就行
注意一下index属性 先抛开QTP的话可以用DOM实现,前提是你能得到弹出层的html代码,这样就可以用对象的object的属性对需要的对象进行查找。比如你图片上的购物车里有两个商品,这两个商品信息可能存在两个div中(也可能是table,具体看源代码)那么也就是说有几个这样的div就有几张单,以此类推,总之我的想法就是根据具体的代码来分析,如果商品很多,都加入对象库也是不现实的,而且对于这种经常改变的信息(购物车)都加入对象库然后再给每个对象起不同的名字也是不现实的。这些你可以学习一下javascript或者vbs,主要是学习对dom的操作 搞了半天研究就出来了 有几种商品Dim oWebElements,oDesc
Set oDesc=description.Create()
oDesc("micClass").value="WebElement"
oDesc("html tag").value="span"
oDesc("class").value="p-price"
set oWebElements= Browser("奶粉 - 商品搜索 - 京东").Page("奶粉 - 商品搜索 - 京东").ChildObjects(oDesc)
oCount=oWebElements.count()
Dim tempObj
For i=0TooCount-1
Set tempObj = oWebElements.Item(i)
print i&" "&tempObj.GetROProperty("innertext")
Next
msgbox "有"& oCount &"种商品" 回复 1# 让测试飞起来
这张图很奇怪啊,购物车后面写的是5件,里面是2件,下面数量总计是1件。。 里面各价格之和是否正确,其实就是用innertext 取到每一行 然后拆分价格和数目,然后在FormatNumber格式化一下拆分的函数是从网上找的
Dim oWebElements,oDesc
Set oDesc=description.Create()
oDesc("micClass").value="WebElement"
oDesc("html tag").value="span"
oDesc("class").value="p-price"
set oWebElements= Browser("奶粉 - 商品搜索 - 京东").Page("奶粉 - 商品搜索 - 京东").ChildObjects(oDesc)
oCount=oWebElements.count()
Dim tempObj
Dim MyString, MyArray, Msg
For i=0TooCount-1
Set tempObj = oWebElements.Item(i)
sliptString=tempObj.GetROProperty("innertext")
intPrice=between(sliptString,"¥","×")
intNums=between(sliptString,"×","")
intTotal=intTotal+(intPrice*intNums)
Next
msgbox "有"& oCount &"种商品"
actPrice=between(Browser("奶粉 - 商品搜索 - 京东").Page("奶粉 - 商品搜索 - 京东").WebElement("共计").GetROProperty("innertext"),"¥","")
IfFormatNumber(intTotal,2)=FormatNumber(actPrice,2) Then
Reporter.ReportEvent micPass, "共计相等", "共计价格为:"& actPrice
Else
Reporter.ReportEvent micFail, "共计不相等", "共计价格为:"& actPrice &"各商品价格之和为:"& intTotal
End If
'得到两个字符串中间的字符串。
'例如:
'text="人民币300元",tBefore="人民币",tAfter="元"
'使用between(text,tBefore,tAfter)得到300.
Public Function between(words,wordBefore,wordAfter)
t1=InStr(words,wordBefore)
If t1=0 Then
between=words
Else
L1=Len(wordBefore)
wordsRight=Right(words,Len(words)-t1-L1+1)
t2=InStr(wordsRight,wordAfter)
If t2=0 Then
wordAfter=""
End If
If wordAfter="" Then
t2=Len(wordsRight)+1
Else
t2=InStr(wordsRight,wordAfter)
End If
needWord=Left(wordsRight,t2-1)
' needWord=Mid(words,t1+L1,t2-t1-L1)
between=needWord
End If
End Function
回复 6# 黑羽祭
嗯 有BUG 哈哈 其实我随机学的不好 可以说就没用过
所以我改成超过1000元删除最后的几张单子
总价大大于1000元时,随机删除几张单,直到总价少于1000?
判断总价是否大于1000 如果大于 记录deleteIndex开始位置 利用循环删除后几张单子
If(intTotal>1000) and (deleteIndex=-1)Then
deleteIndex=i
End If
IfdeleteIndex>=0Then
For j=deleteIndex To oCount-1
Browser("奶粉 - 商品搜索 - 京东").Page("奶粉 - 商品搜索 - 京东").Link("name:=删除","index:=" & j).Click
Next
End If 谢谢你的问题 让我学习了好多
描述性编程,拆分字符串,格式化数字类型 全部的代码在这里
http://bbs.51testing.com/thread-943311-1-1.html 回复 11# 赵佳乐SMILE
这个是公司在做的项目,正在进行中,
我一个人做测试 累呀 回复 12# 让测试飞起来
招人不 把我招去吧 回复 2# 赵佳乐SMILE
你这个是搜索的吧!? 回复 5# 赵佳乐SMILE
获取总数的时候,要把鼠标放到那里,让那个购物车的弹出层出来才可以运行成功
要不就会报错 运行到(item(i))时会报错,是越界吧!
如果把 09到13行注销的话,得出的 msgbox 为空的!
不是0 回复 13# 赵佳乐SMILE
你就别来抢我饭碗了,大姐.......
加我Q呗,我问题多着呢!!!!
1300115774 回复 16# 让测试飞起来
你在广州啊 我暂时还抢不着。。。 回复 14# 让测试飞起来
是搜索的 搜的奶粉 :victory:学习 额(⊙o⊙)…那个将鼠标移动到那个控件,不是点击,貌似只能模拟录制,但是模拟录制后怎么获取那个页面的相关属性……而且模拟录制后,再针对那个页面属性调试脚本貌似会报错,你们是怎么解决的?:dizzy:
页:
[1]
2