2016-11-15 66 views
1

我对UFT和VB脚本都比较陌生。 我正在检查For循环内的div的innertextxt。For Loop给对象所需的错误

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 任何指针将是非常有益的。 谢谢,

+0

'对于集合中的每一件事'都是循环数组或集合的一种方式。 'thing'(你可以调用任何东西,'obj'也许)是数组或对象的内容(如果是集合的话)。 – 2016-11-15 19:28:12

+0

我也试过 - 对于getData中的每个myData msgbox myData.innertextxt ..这也不起作用。它表示,Objct不支持此属性或方法,因为For Each行 – phpfreak

+0

因此请找出您拥有的内容。在你的数据上做一个'VarType'和IsEmpty等你的东西。 – 2016-11-15 19:46:12

回答

1

需要澄清:

,你想查询的div的文字,那是任何理由使用类名?如果是这样,你可以使用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属性。

+0

我会尝试一下,看起来它会按我想要的方式工作。 – phpfreak

0

它给你的错误很可能是因为,除了div或div以外,还有与class name相同的各种元素。 尝试使用其他一些属性。