Тестирование Fly Out Menu в QTP - PullRequest
       25

Тестирование Fly Out Menu в QTP

2 голосов
/ 21 сентября 2009

Я ищу идеи для запуска действий для всплывающих меню с использованием QTP.

Я тестирую веб-приложение с использованием QTP. Приложение имеет «каскадное» или иерархическое всплывающее меню.

например. Options->Preferences

При перекодировании QTP распознает конечную точку в иерархии меню (скажем, «Предпочтения»). Но во время выполнения теста выстрел WebElement("Preferences").Click не работает.

Если я звоню Link("Options").FireEvent ("onmouseover"), он опускает меню, и после этого я могу выделить пункт «Предпочтения», но при нажатии кнопки, даже после того, как меню опущено, действие меню не запускается.

Были бы полезны любые идеи для запуска действия щелчка по этим пунктам меню.

С уважением,
АДАРША

Ответы [ 5 ]

5 голосов
/ 21 сентября 2009

Если Click не выполняет работу, то, вероятно, существуют другие события, которые ожидает веб-приложение, которые не моделируются QTP. Один из способов обойти это - включить режим Device Replay в Интернете:

Setting.WebPackage("ReplayType") = 2 

После этой строки в тесте всякий раз, когда QTP видит шаг Click, он воспроизводит его, перемещая мышь над элементом и имитируя щелчок, чтобы все события, которые запускаются людьми, были запущены.

Чтобы вернуться к режиму воспроизведения событий по умолчанию, установите "ReplayType" в 1.

2 голосов
/ 27 сентября 2009

В связи с потерей многозадачности во время выполнения QTP я не реализовал предложение Мотти. В итоге я просмотрел код HTML, чтобы увидеть, какие события мыши ожидаются сценарием Java. Оказывается, мне нужно вызвать следующие последовательности:

Link("Options").FireEvent ("onmouseover")
WebElement("Preferences").FireEvent ("onmouseover")
WebElement("Preferences").FireEvent ("onClick")

Этот трюк работает очень хорошо, но здесь есть риск, если они решительно что-то поменяют (скажем, вместо засветки на Click, если они используют onMouseDown). Мне нужно настроить скрипт теста.

1 голос
/ 13 декабря 2010

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

Set objMenu = Browser("Browser").Page("Pagel").WebElement("Menu_ELM")
Set objDeviceReplay1 = CreateObject("mercury.devicereplay")
x = objMenu.GetROProperty("abs_x")
y = objMenu.GetROProperty("abs_y")
objDeviceReplay1.MouseClick x + 35 , y + 5,0
Set objDeviceReplay1 = Nothing
0 голосов
/ 05 октября 2015

У меня аналогичная ситуация была обработана немного по-другому, сначала нажмите на родительскую ссылку Options, затем запустите fireevent onclick с помощью порядкового идентификатора

eg: browser().page().link(options).click

browser().page().link("name:=preferences","html tag:=A","index:=X").firevent "onclick"

В идеале это должно было бы загрузить предполагаемую родительскую ссылку и было бы полезно для запуска события пожара при щелчке - надеюсь, это поможет.

0 голосов
/ 21 июля 2010

Вот что я сделал с похожей проблемой:

Set desPrefLink = Description.Create
    desPrefLink("micclass").value = "Link"
    desPrefLink("innertext").value = "Preferences"

Browser(X).Page(Y).Link(desPrefLink).Click()

Возможно, он не будет работать с более динамичным меню Javascript.

...