For 循环给出 Object Required 错误

For Loop gives Object Required Error

我对 UFT 和 VB 脚本都比较陌生。 我正在尝试检查 For 循环中 div 的内部文本。

set getData = Browser("Browser").Page("Page").Object.getElementsByClassName("ClassName")
'Below line outputs 5'
msgbox getData.length-1
'output innertext for all these divs'
For i=0 to getData.length-1
       msgbox getData(i).innertext  
Next

这让我在这一行出现对象必需错误

msgbox getData(i).innertext 

我的第一个和第二个元素是空白的,而 3、4、5 是非空值。 当我写

msgbox getData(0).innertext
msgbox getData(1).innertext
msgbox getData(2).innertext

它给了我正确的结果

我还需要根据 UFT 中的 "Data" 电子表格检查此数据 任何指针都会非常有帮助。 谢谢,

需要说明:

如你想查询div文本,是否有使用ClassName的理由?如果是这样,您可以使用 getElementsbyTagName 而不是 getElementsByClassName。

但是,我增强了代码并通过函数中的任何标签名称选项调整了查询​​。给你。

Dim objResultsDictionary

Set objResultsDictionary = GetTextContentFromHtmlTag(Browser("title:=Welcome: Mercury Tours").Page("title:=.*"),"div","")
Msgbox objResultsDictionary.Count

Result:8

Set objResultsDictionary = GetTextContentFromHtmlTag(Browser("title:=Welcome: Mercury Tours").Page("title:=.*"),"ClassName","mouseOut")
Msgbox objResultsDictionary.Count

Result = 11

Public Function GetTextContentFromHtmlTag(ByVal BrowserObject,ByVal TagName,ByVal TagValue)
    Dim objDictionary
    Dim objCollection
    Set objDictionary = CreateObject("Scripting.Dictionary")
    Select Case UCase(TagName)
        Case "DIV"
            Set objCollection = BrowserObject.Object.getElementsByTagName(TagName)
        Case "CLASSNAME"
            Set objCollection = BrowserObject.Object.getElementsByClassName(TagValue)
    End Select
    intDivCount = objCollection.Length
    If intDivCount > 0 Then
        For intCounter = 0 To intDivCount
            If IsObject(objCollection(intCounter)) Then
                strTagInnerText = objCollection(intCounter).innerText
                If strTagInnerText <> "" Then
                    objDictionary.Add intCounter,strTagInnerText
                End If
            End If
        Next
    End If
    Set GetTextContentFromHtmlTag = objDictionary
End Function

你需要做的事情:

您必须迭代字典并获取每个标签的内部文本。

它给你这个错误很可能是因为除了 div 或 div 之外,还有许多具有相同 class 名称的元素。 尝试使用其他一些属性。