QTP: тег HTML распознается, но функция щелчка не имеет ответа

В QTP11 у меня есть функция, как показано ниже, для обработки кнопки выпадающего списка. Структура HTML выглядит следующим образом:

Sub FindDropdown (text) 'получить страницу и текст в качестве счетчика параметров = 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 можно было распознать, я не смог выполнить действие (например, click), и на самом деле код: trContent(i).Object.click(), похоже, не имел никакого эффекта.

Это имеет какое-либо отношение к месту слушателя / обработчика события? например слушатель не является элементом TR или TD?

2 ответа

Решение

Я полностью испробовал четыре метода для запуска прослушивателя события щелчка: 1. Распознавание QTP: просто с помощью TO, содержащегося в репозитории объектов, и.click для запуска прослушивателя щелчка. Нет ответа; 2. Использование метода SendKeys: он работает в этом действии, в то время как когда я вызывал действие из основного действия, он не работает; 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

Надеюсь, что это может быть полезно для парней, которые сталкиваются с той же проблемой.

Сначала проверьте, есть ли у вас прослушиватель кликов или нет. Необходимо.

Вы можете попробовать приведенный ниже код trContent(i).Object.FireEvent("onclick")

Другие вопросы по тегам