Vbscript HP QTP 11:在Firefox中运行时脚本执行失败,但调试查看器显示操作结果

Vbscript HP QTP 11:在Firefox中运行时脚本执行失败,但调试查看器显示操作结果,vbscript,cross-browser,qtp,Vbscript,Cross Browser,Qtp,我正试图在Firefox 3.6上运行我们为IE编写的自动化,并面临这些令人沮丧的问题: 我有一个密码: Set cellDataItems = Browser().Page().WebElement().Object.getElementsByTagName("div") For i = 0 to cellDataItems.length -1 MsgBox (cellDataItems.item(i).innerHTML) Next 当脚本与MsgBox对齐时,如果因错误而停止:

我正试图在Firefox 3.6上运行我们为IE编写的自动化,并面临这些令人沮丧的问题: 我有一个密码:

Set cellDataItems = Browser().Page().WebElement().Object.getElementsByTagName("div")
For i = 0 to cellDataItems.length -1 
    MsgBox (cellDataItems.item(i).innerHTML)
Next
当脚本与MsgBox对齐时,如果因错误而停止:

TypeError:obj[FuncName]未定义

然后我按下debug,看到I=0。我将cellDataItems.item(I).innerHTML添加到调试查看器中,它会显示它的值(见下文),而不会出现错误。此外,cellDataItems.item(i).textContent在调试查看器中显示良好

i=0时cellDataItems.item(i).innerHTML的值为:

<table class="x-grid3-row-table" style="width: 100px;" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="x-grid3-col x-grid3-cell x-grid3-td-0 x-grid3-cell-first " style="width: 98px; text-align: left;" tabindex="0"><div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on"><div align="left">AUD/USD</div></div></td></tr></tbody></table>
当我使用eval时,它工作了!也许有什么方法可以为firefox调试QTP扩展的代码

更新3: 这是怎么可能的:表达式“colItem.className”的值为“x-panel”,但在我执行表达式之后

sClassName = colItem.className
sClassName的值为空:

这项工作: sClassName=eval(“colItem.className”)


这怎么可能?!!!!!!或者我疯了,或者QTP 11内部有biiig缺陷

我找到了原因并找到了解决办法

所以,在关联库的某个地方,我有一个代码:

Set itemCol = windows.item(i) ' line 1
sClassName = itemCol.className ' line 2
在另一个库中,我有一个表达式:

arrMyTradeInfo=GlobalDictionary.Item("gdTrades")
在执行第1行期间,使用此代码,QTP将给出错误:

TypeError:obj[FuncName]未定义 但是如果我将代码改为(注意“item”函数名-现在小写)-第1行就可以了!!!:

但是在第2行它将不起作用-请参阅问题本身中的更新3-sClassName的值将为空,但itemCol.className可能包含字符串。在另一个库中,我有一个函数(注意className参数):

函数GetFirstObjectByClassName(byVal父类、byVal类名、byVal标记)
模糊结果
结果=GetElementsByCassName(父级、类名、标记)

如果(UBound(result)这确实看起来像QTP 11中的缺陷(更具体地说,是Firefox3.6支持补丁中的缺陷)。我建议您向HP支持部门申请。感谢您的帮助!您可以在下面查看我的调查。
arrMyTradeInfo=GlobalDictionary.Item("gdTrades")
arrMyTradeInfo=GlobalDictionary.item("gdTrades")
Function GetFirstObjectByClassName(byVal Parent, byVal className, byVal tag)
    Dim result
     result = getElementsByClassName(Parent, className, tag)
     If (UBound(result)<0) Then
        set GetFirstObjectByClassName = Nothing
    Else
        set GetFirstObjectByClassName = result (0)
    End If   
End Function
Function GetFirstObjectByClassName(byVal Parent, byVal csName, byVal tag)
    Dim result
     result = getElementsByClassName(Parent ,csName, tag)
     If (UBound(result)<0) Then
        set GetFirstObjectByClassName = Nothing
    Else
        set GetFirstObjectByClassName = result (0)
    End If   
End Function