51Testing软件测试论坛

标题: 添加成功后返回列表,列表中有该添加内容的状态.......(需帮助) [打印本页]

作者: louqqson008    时间: 2012-9-3 20:21
标题: 添加成功后返回列表,列表中有该添加内容的状态.......(需帮助)
本帖最后由 louqqson008 于 2012-9-4 11:14 编辑

添加成功后返回列表,列表中有该添加内容的状态,每条添加的内容的“状态”对象属性都一样,对象是webelement
并且每条列表框对象也都是webelement

我现在是想:当添加成功后,根据添加时的随机数及状态,判断状态功能是否正常,
set rotext=Browser("调查问卷").Page("调查问卷").WebElement("进行中").GetROProperty("innertext")
我用上面这句来读取状态的  “值”但一直报错。
/缺少对象: '[string: "进行中"]'
Line (43): "set rotext=Browser("调查问卷").Page("调查问卷").WebElement("进行中").GetROProperty("innertext")". /

提示错误为这个。有点搞不懂了
作者: joykao    时间: 2012-9-4 11:38
添加完后,直接遍历所有的WebElement 对象,直到找出你加的那个就行了哇。。。
作者: louqqson008    时间: 2012-9-4 12:51
回复 2# joykao


   
    如何找到是我最新添加的那个对象呢,因为状态这栏所有属性都一样的(除了位置)都一样,
Set rotext=Description.Create
rotext("html tag").value="EM"
Set rotexts=Browser("调查问卷").Page("调查问卷").ChildObjects(rotext)
rotext.Count=Browser("调查问卷").Page("调查问卷").ChildObjects("rotext count")
For i=0 to elstate.Count-1


Next
写到循环这这写不下去了,麻烦指导下
作者: joykao    时间: 2012-9-4 13:49
回复 3# louqqson008

根据你说的意思,随便猜一点啦,有问题自己调调
Set webElementobj=Description.Create()
webElementobj("micClass").value ="WebElement"
set webelements=Browser("micClass:=Browser").Page("micClass:=Page").ChildObjects(webElementobj)
numbers=webelements.count
'假设你加的东西叫EM
checkText="EM"
For i=0 to numbers-1
        webElementcheck=Trim(Browser("micClass:=Browser").Page("micClass:=Page").WebElement("micClass:=WebElement","index:="&i).GetROProperty("html tag"))
        If webElementcheck= checkText Then
                reporter.ReportEvent micPass,"EM has been added","pass"
        End If
Next
作者: joykao    时间: 2012-9-4 14:43
貌似不用这么烦哇,你加的那个东西有点特别的地方吧,比如 innertext,

Browser("micClass:=Browser").Page("micClass:=Page").WebElement("innertext:=EM").exist 就可以验证了吧?疯掉
作者: xjwldlover    时间: 2012-9-4 14:49
应该会存在比较特别的属性,建议楼主安装一个网页分析工具,QTP必备。我用的是debugBar,使用工具可以更清晰的看出某一块区的特别属性~
作者: louqqson008    时间: 2012-9-4 16:40
回复 5# joykao


    感谢的你回答,验证存在是可以验证,
是我说的不够清楚吧,不好意思啊
EM 是对象“状态”的html tag属性对应值
还有就是判断出innertext,但问题是有很多条内容时,会有很多重复的,
也就是说在列表中,每条内容的对象“状态”的属性值都一样,导致我无法读取到他。

现在也搞不明白为什么属性中不是某个值不是按0.1.2.3这样排下去的
作者: louqqson008    时间: 2012-9-4 16:40
回复 6# xjwldlover


    谢谢,下载试试看
作者: louqqson008    时间: 2012-9-4 17:12
回复 6# xjwldlover


     谢谢,下载了,可以找到这句Html和css,但不知道对象在哪里特殊属性
作者: joykao    时间: 2012-9-4 17:21
回复 7# louqqson008
其实还是没搞清楚你说的对象到底是个什么情况,好好研究哈。
作者: louqqson008    时间: 2012-9-4 18:00
回复 10# joykao


   呵呵,我也有点迷糊,所以有点表达不清

最上面的问题中图片能看到吗,图片中状态2字后面的“未开始”就是我说的对象“状态”,

下班了,可以的话,明天多截点图上来
作者: xjwldlover    时间: 2012-9-5 10:24
楼主使用DebugBar查看两个记录的HTML标签内容完整贴出来,大家看看,要外层哦(就是你查看标签内容以后往当前节点向上多查一层)。
作者: louqqson008    时间: 2012-9-5 10:51
回复 12# xjwldlover


    <ul class="clearfix">
    <li class="lc over"><h1>QTP.Texting</h1>
      <span>调查表地址:<a href="http://***/index/13.html>http://***</a></span>
      状态:<em>未开始</em>  参与人数:0人  起止时间:2012-09-09至2012-10-01
    </li>
  </ul>
  
<ul class="clearfix">
    <li class="lc over"><h1>奉化二日游</h1>
      <span>调查表地址:<a href="http://***/index/1.html>http://***</a></span>
      状态:<em>已结束</em>  参与人数:2人  起止时间:2012-07-26至2012-08-30
    </li>
  </ul>
这样看起来清楚点,
这几个都是在一个 <div>里面,感觉就只有span下的href尾数不一样,
你所说的特殊属性是指这个吗
作者: xjwldlover    时间: 2012-9-5 11:12
这样就方便多了。
①既然是自动化,你在创建记录名称的时候肯定可以唯一命名<h1>QTP.Texting12321</h1>
②你要找的记录肯定存在于<li class="lc over">这个列表,你通过getElementsByTagName("li")可以找到所有的记录列表。
③然后你通过instr或者正则表达式,可以判断出哪个li中存在 QTP.Texting12321,找到这条记录。
④然后找到根据记录的OuterHtml可以搜索"<em>已结束</em>“标签的innerText,或者你写个截取函数也是可以的
作者: louqqson008    时间: 2012-9-5 12:53
本帖最后由 louqqson008 于 2012-9-5 14:01 编辑

回复 14# xjwldlover


  
    谢谢,看了2遍有点理解了,你说的思路我能理解,但是如何实现就有点迷茫了,一直在写,没头绪,下面写的都是浮云....

   但是 1.getElementsByTagName这个我F1了下,没有这个方法。不知道如何去实现。
ALL_li=Browser("调查问卷").Page("调查问卷").WebElement("调查问卷列表").getElementsByTagName("li")
ALL_liName=ALL_li.Name
liName=instr(1,ALL_liName,"QTP.Texting")不知道这样写哪里有错,
          2.请教下,如何根据记录的OuterHtml进行搜索啊,如果记录是only_li.  谢谢,这个不知道从那下手了
作者: xjwldlover    时间: 2012-9-5 14:01
回复 15# louqqson008
1,getElementsByTagName是DOM方法,上网直接搜这个函数,或者去W3CSchool里看DOM相关的东西就OK了(Li缺了引号)
3.你可以通过instr(OUTERHTML,"<em>已结束</em>")来判断;
更好的方式是通过获第3步获得的obj.getElementsByTagName("em")再获取一次,取innerText

ps,话说细节性的东西你应该自己查文档哦~
作者: louqqson008    时间: 2012-9-5 14:15
回复 16# xjwldlover


    好的,谢谢了,学习学习.




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