문제

QTP를 사용하여 플라이 아웃 메뉴에 대한 행동을 유발하는 아이디어를 찾고 있습니다.

QTP를 사용하여 웹 앱을 테스트하고 있습니다. 응용 프로그램에는 "계단식"또는 계층 적 비행 메뉴가 있습니다.

예를 들어 Options->Preferences

Recoding QTP는 메뉴 계층의 종점을 인식합니다 ( "기본 설정"). 그러나 시험을 실행하는 동안 발사 WebElement("Preferences").Click 작동하지 않습니다.

내가 전화하면 Link("Options").FireEvent ("onmouseover") 메뉴를 끌어 내고 그 후에는 환경 설정 항목을 강조 표시 할 수 있지만 메뉴를 아래로 당겨도 클릭을 호출하면 메뉴 작업이 트리거되지 않습니다.

이 메뉴 항목에 대한 클릭 조치를 유발하는 아이디어가 유용합니다.

문안 인사,
아다 샤

도움이 되었습니까?

해결책 2

QTP가 실행되는 동안 멀티 태스킹을 잃어버린 이유 때문에 Motti의 Suggesiton과 함께 구현하지 않았습니다. 그래서 나는 Java 스크립트에서 어떤 마우스 이벤트가 예상되는지 확인하기 위해 HTML 코드를 살펴 보았습니다. 아래 순서를 호출해야합니다.

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

이 트릭은 정말 훌륭하게 작동하지만 여기서 위험은 그들이 크게 바꾸는 것입니다 (onMousedOwn을 사용하는 경우 클릭 할 로트 닝이 등장하는 경우) 테스트 스크립트를 조정해야합니다.

다른 팁

만약에 Click 작업을 수행하지 않으면 웹 앱이 QTP에 의해 시뮬레이션되지 않은 다른 이벤트가있을 수 있습니다. 이 문제를 해결하는 한 가지 방법은 웹을 켜는 것입니다. 장치 재생 방법:

Setting.WebPackage("ReplayType") = 2 

QTP가 볼 때마다 테스트 에서이 라인 이후 Click 계단은 마우스를 요소 위로 움직이고 클릭을 시뮬레이션하여 인간이 발사 한 모든 이벤트가 해고됩니다.

기본 이벤트 재생 모드 세트로 돌아가려면 "ReplayType" 1까지.

옵션이 하나 더 있습니다. 이것을 사용하여 모든 객체를 클릭하십시오.

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

내가 비슷한 문제로 한 일은 다음과 같습니다.

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

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

그러나보다 역동적 인 JavaScript 메뉴에서는 작동하지 않을 수 있습니다.

약간 다른 방식으로 비슷한 상황이 있었는데 먼저 부모 링크를 클릭하십시오. Options 그런 다음 Fireevent를 트리거하십시오 onclick 서수 식별자의 도움으로

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

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

이것은 의도 된 상위 링크를 이상적으로로드하고 클릭으로 화재 이벤트를 트리거하는 데 도움이 될 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top