51Testing软件测试论坛

标题: 如何获取页面上的文字信息? [打印本页]

作者: miludeer    时间: 2004-7-2 12:57
标题: 如何获取页面上的文字信息?
WEB功能测试:
目的:希望获取页面中的文字信息
过程:由于整个页面是由Table组成,所以无法SQAGetProperty获取文字信息

请有过此经历的朋友给予帮助.谢谢
作者: jzhao    时间: 2004-7-2 13:30
WR 有这个功能,你看看有关的资料就知道了 :p
作者: ghost    时间: 2004-7-2 14:23
标题: 有很多
很多程序设计的书中都有写到,
查一查做即时翻译之类的软件或功能。
作者: miludeer    时间: 2004-7-2 15:02
如果使用Robot呢,可以实现吗?如何实现呢?
作者: jzhao    时间: 2004-7-2 15:53
robot 没有找到过这种功能,我想应该有类似的函数把,你看看帮助把
作者: pcl2004_27    时间: 2004-7-3 15:40
标题: 关于获得网页文字
由于个人原因,没有把编译好dl然后送给!请见量!
         基本功能我已经实现,不过可能需要你自己在推敲,你的那个网页周末走的匆忙!没有根据你的项目来!我在这里把整个思路和解决方案写下来,你回去自己研究!
         robot在对网页操作的时候,只能读取网页的document或者table。没有进一步实现如果得到具体某一个cell的内容。如果web网页中有其他元素,类似于text,listbox的元素,那么这个可以通过sqagetproperty直接获取元素值。那对table这样特殊的元素是否既没有办发了呢!?
      我们利用robot可以加载其他dll的办法,来扩展它的功能。
      
      这里我用一个例子模拟!
      下边我写了一个简单的table页面
        由于页面自动注释html代码,无法把代码贴出!我把<>都去掉
       html
       title
          测试
       /title
       body
       table
          tr
              td
                aaa
             /td
             td
                bbb
            /td
            td
                ccc
            /td
         /tr
      /table
      /body
      /html

      


     保存html,运行效果如下
        aaa bbb ccc

[ Last edited by pcl2004_27 on 2004-7-3 at 15:51 ]
作者: pcl2004_27    时间: 2004-7-3 16:02
我用vb写的一个函数,你可以把它编成dll,加载到robot中!
  代码如下

Function FindSucessString(byval url as string, byval strFind as String) as boolean
           
        Dim ie as SHDocVw.InternetExplorer
        Dim Doc as MSHTML.HTMLDocument
        Dim td as MSHTML.HTMLBody
        Dim tbl as MSHTML.HTMLTable
        Dim  r as MSHTML.HTMLTableRow
        Dim c as MSHTML.HTMLTableCell
        
       Dim i as integer
       set IE = New SHDocVw.InternetExplorer
      
       IE.Navigate url
       Set doc = ie.document
       set td = doc.body
      
       for i = 0 to doc.all.length - 1
            if UCASE(doc.all(i).tagName) ="TABLE" Then
              Set tbl = doc.all(i)
                 for each r in tbl.rows
                     for each c in r.cells
                         if ucase(c.innertext) = strFind then
                           FindSucessString = true
                          exit Function
                       end if
                     next
                 next
          end if
    next
   
   FindSucessString =False
   Set doc =nothing

End Function

url是包含你要处理的table页面地址,  strFind 是你需要对比的那个字符串

其实整个思路是,遍历table,对比cell的内容!

[ Last edited by pcl2004_27 on 2004-7-12 at 16:29 ]
作者: pcl2004_27    时间: 2004-7-16 09:08
为了和robot中代码兼容,修改以上代码
Function FindSucessString(byval url as string, byval strFind as String) as integer
           
        Dim ie as SHDocVw.InternetExplorer
        Dim Doc as MSHTML.HTMLDocument
        Dim td as MSHTML.HTMLBody
        Dim tbl as MSHTML.HTMLTable
        Dim  r as MSHTML.HTMLTableRow
        Dim c as MSHTML.HTMLTableCell
        
       Dim i as integer
       set IE = New SHDocVw.InternetExplorer
      
       IE.Navigate url
       Set doc = ie.document
       set td = doc.body
      
       for i = 0 to doc.all.length - 1
            if UCASE(doc.all(i).tagName) ="TABLE" Then
              Set tbl = doc.all(i)
                 for each r in tbl.rows
                     for each c in r.cells
                         if trim(c.innertext) = strFind then
                           FindSucessString = 1
                          exit Function
                       end if
                     next
                 next
          end if
    next
   
   FindSucessString =0
   Set doc =nothing

End Function

如果成功返回值为1,否则为0

经过测试我修改了table,中间如多种页面元素,比如input text等
你把以上代码修改为dl,主意要引用两个对象mshtml ,mircosoft internet control两个对象!然后编译。
然后注册该dll,再robot中引用就可以了




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2