我想在下面找到这个行数。我试图通过下面的代码
使用HTML TAG = A来使用它Set oDesc = Description.Create()
oDesc("micclass").Value = "WebElement"
Set Elements = Browser("creationtime:=0").Page("index:=1").Object.GetElementsByTagName("a")
Msgbox "Total links: " & Elements.Length
我的行数错误,因为这些网络元素中很少有不同的html标记'DIV'。下图。请帮我查一下行数。
答案 0 :(得分:0)
如果您只想获取网格的行数,而不是使用A
标记,则可以使用每行的DIV
标记。
为此,您应该首先检查您的网格并找到父div(包含所有网格内容但没有标题的那个)并获取其HTML类
之后,您会找到每行的DIV(可能是A
标记元素的直接父级,如果不是上面的一级),也可以使用其HTML类。您会注意到每行的类是相同的。如果没有,你可以很容易地找到一个模式,并想出一个适合他们的正则表达式。
要检查元素,我建议使用浏览器检查,因为有一些UFT Spy功能无法找到的元素。如果你不能使用浏览器检查工具,你可以使用UFT Spy功能,但检查你想要的元素会有点困难。密切关注这一点。
使用父div类和行div类,您可以创建两个描述对象并使用它们。这是一个简短的例子
Dim parent : Set parent=Description.Create
parent("micclass").Value="WebElement"
parent("html tag").Value = "DIV"
parent("class").Value="ui-grid ng-binding ng-scope your-parent-div-class" ' change the class accordingly
Dim rows : Set rows = Description.Create
rows("micclass").Value = "WebElement"
rows("html tag").Value = "DIV"
rows("class"). Value = "ui-grid ng-binding ng-scope your-rows-div-class" ' change the class accordingly
Dim objParent : Set objParent = Browser("CreationTime:=0").Page("title:=.*").ChildObjects(parent)
If objParent.count > 0 then
Dim objRows : Set objRows = objParent(0).ChildObjects(rows)
MsgBox objRows.Count
Else
MsgBox "Something wrong with your parent description object"
End If
此特定代码未经过测试,所需的类更改是必需的! 我离UFT很远,所以我现在无法测试,但解决方案不应该远离这个。 我必须实现一个函数来抓取我的项目的整个网格,所使用的技术是Angular ui-grid。我的部分代码正是让行对象正常工作。
通过查看截图,您看起来在页面中实现了相同的技术,因此这应该适合您。 请记住,如果开发人员在网格中实现了无限滚动,则必须向下滚动才能获得正确的行数,因为HTML中的行在滚动时加载到DOM中(类似于Facebook行为),这是相当多的复杂的实现(但也可以做到)
希望这会有所帮助。