QTP:识别HTML标记,但点击功能没有响应

时间:2013-12-13 10:32:27

标签: testing qtp testautomationfx

在QTP11中,我有一个如下功能来处理下拉列表按钮。 HTML结构如下:

enter image description here     Sub FindDropdown(文字)     '获取页面和文本作为参数     counter = 0

Set oDesc = Description.Create()
oDesc("html tag").Value = "tr"
Set trContent = Browser("Change Management - SAP").Page("Change Management - SAP").ChildObjects(oDesc)
TRSum = trContent.Count()

For i = 0 To TRSum - 1
    Set objPage = trContent(i).Object
    Set objTag = objPage.GetElementsByTagName("td") 
    spanSum = objTag.Length - 1

    For intCtr = 0 to spanSum
            strLink = objTag(intCtr).InnerText
            If strLink = text Then
                 trContent(i).Object.click()
            End If 
     Next   
Next
Set  oDesc=nothing

End Sub

虽然我已经测试了,并且内部元素Select All可以识别,但我无法执行操作(如点击),事实上,代码:     trContent(ⅰ).Object.click() 似乎没有效果。

这与侦听器/事件处理程序位置有什么关系吗?如听众不是TR或TD元素?

2 个答案:

答案 0 :(得分:1)

首先验证您是否附加了点击监听器。这是必要的。

您可以尝试以下代码 trContent(ⅰ).Object.FireEvent( “点击”)

答案 1 :(得分:1)

我尝试了四种方法来触发click事件监听器: 1. QTP识别: 只需使用Object Repositery中包含的TO和.click来触发单击侦听器。没有反应; 2.使用SendKeys方法: 它适用于此Action,而当我从主要操作调用Action时,它不起作用; 3.使用DOM调用: 就像问题中的上述脚本一样,我无法触发点击处理程序;

最后,我转向了设备重放。该想法获取元素的运行时间位置,然后单击该位置。这在某种程度上是低级功能,它对我来说运行顺畅。 这是我的工作脚本:

Set objReleaseTR = Browser("Change Management - SAP").Page("Change Management - SAP_3").WebElement("Release all Transport")

Set objDeviceReplay = CreateObject("mercury.devicereplay")

x = objReleaseTR.GetROProperty("abs_x")
y = objReleaseTR.GetROProperty("abs_y")

objDeviceReplay.MouseClick x + 5, y + 5, 0

Set objDeviceReplay = nothing

希望这对遇到同样问题的人有所帮助。