51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2981|回复: 17
打印 上一主题 下一主题

[原创] -----如何抓取指定页面上的特定文字-------

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-7-31 11:44:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在需要打开被测系统的每一个模块,然后判断该页面是否报错(就是搜索页面上是否有“错”字),若有报错则不关闭模块,没报错就关闭模块


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页呢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2012-7-31 17:53:22 | 只看该作者
在Page和WebElement间再添加一层对象,用于标识tab页
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2012-7-31 20:52:01 | 只看该作者
本来是要加在Page和WebElement间frame,但属性都一样,只能通过index来区分,问题是每个frame的index事先不知道,且无规律,不知还能有什么方法
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2012-7-31 20:52:25 | 只看该作者
本帖最后由 zengli80 于 2012-7-31 20:57 编辑
在Page和WebElement间再添加一层对象,用于标识tab页
hsjzfling 发表于 2012-7-31 17:53


本来是要在Page和WebElement间加frame,但属性都一样,只能通过index来区分,问题是每个frame的index事先不知道,且无规律,不知还能有什么方法
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2012-7-31 21:39:49 | 只看该作者
若很难找到一层可以区分的对象,可以用比较暴力点的方法


  1. Set mydesc=description.Create()
  2. mydesc("html tag").value="B"
  3. mydesc("innertext").value=".*错.*"
  4. MyDesc("innertext").RegularExpression = true
  5. If Browser("CreationTime:=1").Page("index:=0").webelement(mydesc).Exist(0)  Then
  6. On Error Resume Next
  7. Err.Clear
  8. Setting.WebPackage("ReplayType") = 2
  9. Browser("CreationTime:=1").Page("index:=0").webelement(mydesc).Click
  10. Setting.WebPackage("ReplayType") = 1
  11. If Err.Number = 0 Then
  12.   '"错"在当前可见页
  13. Else
  14.   '"错"不在当前可见页
  15. End If
  16. On Error GoTo 0
  17. '..............................
  18. Else
  19. '.............................
  20. End If
复制代码

该方法执行效率会偏低,可将全局同步等待时间改小些,并自行优化下逻辑提高效率
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2012-8-1 00:00:40 | 只看该作者
若很难找到一层可以区分的对象,可以用比较暴力点的方法


该方法执行效率会偏低,可将全局同步等待时间 ...
hsjzfling 发表于 2012-7-31 21:39


按照你的方法,写了以下代码,总是在当前页可见,是怎么回事呢?

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
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2012-8-1 08:33:56 | 只看该作者
总觉得有点像拿自动化工具做性能测试的事情。试试楼上的方法吧,不过我还想知道你所谓的出错到底是个什么样子呢,否则怎么写对象描述
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2012-8-1 10:12:07 | 只看该作者
加一个visible属性
mydesc("visible").value=True
如果在当前页,那就highlight看下在哪里
Browser("CreationTime:=0").Page("index:=0").webelement(mydesc).HightLight
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2012-8-1 14:38:22 | 只看该作者
加一个visible属性
mydesc("visible").value=True
如果在当前页,那就highlight看下在哪里
Browser("Cre ...
hsjzfling 发表于 2012-8-1 10:12


我要找的文字不在当前页啊,但Err.Number 总是等于0

mydesc("visible").value=True
要加在什么位置啊?
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2012-8-1 14:43:09 | 只看该作者
总觉得有点像拿自动化工具做性能测试的事情。试试楼上的方法吧,不过我还想知道你所谓的出错到底是个什么样 ...
云层 发表于 2012-8-1 08:33


因为被测系统有几百个模块,每次回归测试,想用自动化来测试有没有模块会报错,报错信息是固定的,会显示“操作出错!”这几个字,不知这个代码怎么写比较好呢?
楼上的方法试过了,但似乎没作用
回复 支持 反对

使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    11#
    发表于 2012-8-1 14:49:29 | 只看该作者
    你的page一直是index:=0不是代表一直是当前页吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2012-8-1 14:49:56 | 只看该作者
    mydesc("html tag").value="B"
    mydesc("innertext").value=".*错.*"
    改成
    mydesc("html tag").value="B"
    mydesc("visible").value = True
    mydesc("innertext").value=".*操作出错!.*"
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2012-8-1 14:52:38 | 只看该作者
    Highlight可以帮助你确认实际找到的和你预期的是否一致,不在当前页Highlight会定位在比较奇怪的位置上(高亮处不可见指定文本)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
     楼主| 发表于 2012-8-1 15:19:33 | 只看该作者
    mydesc("html tag").value="B"
    mydesc("innertext").value=".*错.*"
    改成
    mydesc("html tag").value="B" ...
    hsjzfling 发表于 2012-8-1 14:49


    还是不行啊!是不是我代码问题
    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
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
     楼主| 发表于 2012-8-1 15:23:53 | 只看该作者
    你的page一直是index:=0不是代表一直是当前页吗?
    joykao 发表于 2012-8-1 14:49


    用SPY查看不同tab页的对象,都是属于一个page
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    16#
    发表于 2012-8-2 09:02:56 | 只看该作者
    本帖最后由 joykao 于 2012-8-2 09:06 编辑

    回复 15# zengli80
    就是说你的页面下用ajax做了几个tab 页是吧, 那就不应该是page对象了,应该是下一层的对象哇。。。能把整个页面截图上一张吗?包括你说的不同的TAB 页
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-4-10 17:57
  • 签到天数: 35 天

    连续签到: 1 天

    [LV.5]测试团长

    17#
    发表于 2012-8-2 09:54:37 | 只看该作者
    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
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2012-8-2 14:27:53 | 只看该作者
    楼上的貌似可行
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 07:34 , Processed in 0.086639 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表