Vbscript QTP UFT-Web元素行数

Vbscript QTP UFT-Web元素行数,vbscript,qtp,hp-uft,Vbscript,Qtp,Hp Uft,我想在下面找到该行的行数。我尝试使用下面的代码使用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 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
我得到了错误的行数,因为这些web元素中很少有不同的html标记'DIV'。下图。请帮我找到行数


如果只想获取网格的行数,而不是使用
A
标记,则可以使用每行的
DIV
标记

为此,您应该首先检查网格,找到父div(包含所有网格内容但不包含标题的div)并获取其HTML类

在这之后,您可以找到每一行的DIV(可能是
A
tag元素的直接父元素,如果不是上面一级的话),还可以获取它的HTML类。您会注意到,每一行的类都是相同的。如果没有,您可以很容易地找到一个模式,并考虑一个适合所有模式的正则表达式

要在这里检查元素,我建议使用浏览器检查,因为有些元素UFT Spy功能无法找到。如果不能使用浏览器检查工具,可以使用UFT Spy功能进行检查,但检查所需的元素会稍微困难一些。请密切关注这一点

使用父div类和rows 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网格。我的代码的一部分就是要处理行对象

通过查看您的屏幕截图,您的页面中似乎实现了相同的技术,因此这应该适用于您。 请记住,如果开发人员在网格中实现了无限滚动,则必须向下滚动才能获得正确的行数,因为HTML中的行在滚动时加载到DOM中(类似于Facebook行为),这要实现起来要复杂得多(但也可以做到)


希望这有帮助

如果只想获取网格的行数,而不是使用
A
标记,则可以使用每行的
DIV
标记

为此,您应该首先检查网格,找到父div(包含所有网格内容但不包含标题的div)并获取其HTML类

在这之后,您可以找到每一行的DIV(可能是
A
tag元素的直接父元素,如果不是上面一级的话),还可以获取它的HTML类。您会注意到,每一行的类都是相同的。如果没有,您可以很容易地找到一个模式,并考虑一个适合所有模式的正则表达式

要在这里检查元素,我建议使用浏览器检查,因为有些元素UFT Spy功能无法找到。如果不能使用浏览器检查工具,可以使用UFT Spy功能进行检查,但检查所需的元素会稍微困难一些。请密切关注这一点

使用父div类和rows 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网格。我的代码的一部分就是要处理行对象

通过查看您的屏幕截图,您的页面中似乎实现了相同的技术,因此这应该适用于您。 请记住,如果开发人员在网格中实现了无限滚动,则必须向下滚动才能获得正确的行数,因为HTML中的行在滚动时加载到DOM中(类似于Facebook行为),这要实现起来要复杂得多(但也可以做到)


希望这有帮助

你能添加html代码的图像吗?你为什么对我们大喊大叫?大喊大叫不会让你更快地得到答案,这是非常粗鲁和恼人的。不要用大写字母发帖了。我试过了,但不行。我们公司阻止查看源代码。哦,对不起@KenWhite。我是第二次发帖,我在这方面有点差劲。我将尝试学习
GetElementsByTagName(“a”)
将只为您获取链接元素(带有标记“a”的元素)。你需要知道使用了哪些其他标记以及你想要哪些。你能添加html代码的图像吗?你为什么对我们大喊大叫?大喊大叫不会让你更快地得到答案,这是非常粗鲁和恼人的。不要用大写字母发帖了。我试过了,但不行。我们公司阻止查看源代码。哦,对不起@KenWhite。我是第二次发帖,我在这方面有点差劲。我将尝试学习
GetElementsByTagName(“a”)
将只为您获取链接元素(带有标记“a”的元素)。你需要知道还有哪些标签被使用,哪些是你想要的。@Vikram Reddy,我注意到你从6月3日起就没有回答过这个问题。你解决了这个问题吗?@Vikram Reddy,我注意到你从6月3日起就没有回答过这个问题。你设法解决了这个问题吗?