-----如何抓取指定页面上的特定文字-------
现在需要打开被测系统的每一个模块,然后判断该页面是否报错(就是搜索页面上是否有“错”字),若有报错则不关闭模块,没报错就关闭模块1、用Src_text=TextUtil.GetText(0, 20, 20, 2000, 2000)来截屏,可惜该方法与windons冲突,每次允许到该行代码就报错
2、用Set mydesc=description.Create()
mydesc("html tag").value="B"
mydesc("innertext").value=".*错.*"
MyDesc("innertext").RegularExpression = true
if Browser("CreationTime:=1").Page("index:=0").webelement(mydesc).Exist(0)Then
因为每个模块都是以tab页的方式打开,若当前有个模块已打开,且搜索到指定文字,那么此后的模块即使没错也不会被关闭,因为总是会搜索到前面tab页面上有指定文字,如何才能只搜索当前tab页呢 在Page和WebElement间再添加一层对象,用于标识tab页 本来是要加在Page和WebElement间frame,但属性都一样,只能通过index来区分,问题是每个frame的index事先不知道,且无规律,不知还能有什么方法 本帖最后由 zengli80 于 2012-7-31 20:57 编辑
在Page和WebElement间再添加一层对象,用于标识tab页
hsjzfling 发表于 2012-7-31 17:53 http://bbs.51testing.com/images/common/back.gif
本来是要在Page和WebElement间加frame,但属性都一样,只能通过index来区分,问题是每个frame的index事先不知道,且无规律,不知还能有什么方法 若很难找到一层可以区分的对象,可以用比较暴力点的方法
Set mydesc=description.Create()
mydesc("html tag").value="B"
mydesc("innertext").value=".*错.*"
MyDesc("innertext").RegularExpression = true
If Browser("CreationTime:=1").Page("index:=0").webelement(mydesc).Exist(0)Then
On Error Resume Next
Err.Clear
Setting.WebPackage("ReplayType") = 2
Browser("CreationTime:=1").Page("index:=0").webelement(mydesc).Click
Setting.WebPackage("ReplayType") = 1
If Err.Number = 0 Then
'"错"在当前可见页
Else
'"错"不在当前可见页
End If
On Error GoTo 0
'..............................
Else
'.............................
End If
该方法执行效率会偏低,可将全局同步等待时间改小些,并自行优化下逻辑提高效率 若很难找到一层可以区分的对象,可以用比较暴力点的方法
该方法执行效率会偏低,可将全局同步等待时间 ...
hsjzfling 发表于 2012-7-31 21:39 http://bbs.51testing.com/images/common/back.gif
按照你的方法,写了以下代码,总是在当前页可见,是怎么回事呢?
Browser("CreationTime:=0").Page("index:=0").link("text:=收件箱","index:=0").Click
Set mydesc=description.Create()
mydesc("html tag").value="SPAN"
mydesc("innertext").value="客服"
MyDesc("innertext").RegularExpression = true
If Browser("CreationTime:=0").Page("index:=0").webelement(mydesc).Exist(0)Then
On Error Resume Next
Err.Clear
Setting.WebPackage("ReplayType") = 2
Browser("CreationTime:=0").Page("index:=0").webelement(mydesc).Click
Setting.WebPackage("ReplayType") = 1
If Err.Number = 0 Then
msgbox "客服,在当前可见页"
Else
msgbox "客服,不在当前可见页"
End If
End If 总觉得有点像拿自动化工具做性能测试的事情。试试楼上的方法吧,不过我还想知道你所谓的出错到底是个什么样子呢,否则怎么写对象描述 加一个visible属性
mydesc("visible").value=True
如果在当前页,那就highlight看下在哪里
Browser("CreationTime:=0").Page("index:=0").webelement(mydesc).HightLight 加一个visible属性
mydesc("visible").value=True
如果在当前页,那就highlight看下在哪里
Browser("Cre ...
hsjzfling 发表于 2012-8-1 10:12 http://bbs.51testing.com/images/common/back.gif
我要找的文字不在当前页啊,但Err.Number 总是等于0
mydesc("visible").value=True
要加在什么位置啊? 总觉得有点像拿自动化工具做性能测试的事情。试试楼上的方法吧,不过我还想知道你所谓的出错到底是个什么样 ...
云层 发表于 2012-8-1 08:33 http://bbs.51testing.com/images/common/back.gif
因为被测系统有几百个模块,每次回归测试,想用自动化来测试有没有模块会报错,报错信息是固定的,会显示“操作出错!”这几个字,不知这个代码怎么写比较好呢?
楼上的方法试过了,但似乎没作用 {:3_74:}你的page一直是index:=0不是代表一直是当前页吗? mydesc("html tag").value="B"
mydesc("innertext").value=".*错.*"
改成
mydesc("html tag").value="B"
mydesc("visible").value = True
mydesc("innertext").value=".*操作出错!.*" Highlight可以帮助你确认实际找到的和你预期的是否一致,不在当前页Highlight会定位在比较奇怪的位置上(高亮处不可见指定文本) mydesc("html tag").value="B"
mydesc("innertext").value=".*错.*"
改成
mydesc("html tag").value="B" ...
hsjzfling 发表于 2012-8-1 14:49 http://bbs.51testing.com/images/common/back.gif
还是不行啊!是不是我代码问题
if Browser("CreationTime:=1").Page("index:=0").webelement(mydesc).Exist(0)Then
On Error Resume Next
Err.Clear
Setting.WebPackage("ReplayType") = 2
Browser("CreationTime:=0").Page("index:=0").webelement(mydesc).Click
Setting.WebPackage("ReplayType") = 1
If Err.Number = 0 Then
Browser("CreationTime:=0").Page("index:=0").webelement(mydesc).HightLight'这句没高亮
j=j+1
end if
else
Browser("CreationTime:=0").Page("index:=0").image("index:="&j+1).Click'关闭不报错的模块
end if 你的page一直是index:=0不是代表一直是当前页吗?
joykao 发表于 2012-8-1 14:49 http://bbs.51testing.com/images/common/back.gif
用SPY查看不同tab页的对象,都是属于一个page 本帖最后由 joykao 于 2012-8-2 09:06 编辑
回复 15# zengli80
就是说你的页面下用ajax做了几个tab 页是吧, 那就不应该是page对象了,应该是下一层的对象哇。。。能把整个页面截图上一张吗?包括你说的不同的TAB 页 LZ不是说Page和WebElement有Frame么, 那就循环找到某个tab进行判断, 有错误就关闭(如果LZ不care是哪个名字的tab的话), 不知能否达到LZ的要求
For i = 0 to 2 '(共3个tab)
Browser().Page().Frame("xxx", "index:=" & i).Click
If Browser().Page().Frame("xxx", "index:=" & i).WebElement(mydesc).Exist(0) Then
'......
End If
Next 楼上的貌似可行
页:
[1]