我对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中针对“数据”电子表格检查此数据 任何指针都会非常有用。 谢谢,
答案 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之外,还有各种具有相同类名的元素。 尝试使用其他一些属性。