2013-12-13 9 views
1

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

enter image description here Sub FindDropdown (текст) 'получить страницу и текст в качестве параметра счетчик = 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 

В то время как я испытал, и с внутренним элементом Выбрать все может быть распознан, я не смог выполнить действие (например, щелчок), и на самом деле код: trContent (i) .Object.click() кажется недействительным.

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

ответ

1

Я пытался совершенно четыре методы для запуска слушателя событий нажмите: 1. QTP recognization: Просто Использование TO, содержащиеся в Object Repositery, и .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 

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

+1

Более простым решением было бы [изменить тип воспроизведения на устройство] (http://stackoverflow.com/a/6670228/3848), а затем сделать простой щелчок на тестовом объекте. – Motti

+0

Спасибо Motti за вашу помощь, да, это простой способ изменить тип воспроизведения QTP. – Torrence

1

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

Вы можете попробовать следующий код trContent (я) .Object.FireEvent ("OnClick")

+0

Спасибо MansoorShaikh :), хотя это все равно не сработает, возможно, прослушиватель событий не находится на TR или SPAN, и я буду обращаться к разработчику за дополнительной информацией. – Torrence