Vbscript HP QTP 11:在Firefox中运行时脚本执行失败,但调试查看器显示操作结果
我正试图在Firefox 3.6上运行我们为IE编写的自动化,并面临这些令人沮丧的问题: 我有一个密码: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对齐时,如果因错误而停止:
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