For Loop给出了Object Required Error

时间:2016-11-15 15:04:03

标签: vbscript qtp hp-uft

我对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

这给了我这一行上的Object Required Error

msgbox getData(i).innertext 

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

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

它给了我正确的结果

我还需要在UFT中针对“数据”电子表格检查此数据 任何指针都会非常有用。 谢谢,

2 个答案:

答案 0 :(得分:1)

需要澄清:

由于您想查询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

你需要做什么:

您必须迭代字典并获取每个标记的innertext。

答案 1 :(得分:0)

它最有可能给你这个错误,因为除了div或div之外,还有各种具有相同类名的元素。 尝试使用其他一些属性。