2014-06-11 2 views
3

HP UFT를 배우고 있습니다.HP QTP/UFT에서 fireevent()의 기능은 무엇입니까?

최근에 나는 fireevent을 발견했으며 웹 사이트 Flipkart에서 구현하려고했습니다. 웹 사이트의 홈페이지에 Men 링크로 firevent("onmouseover")을 사용하려고했습니다.

내가 먼저 강조하고 object.fireevent("OnClick")뿐만 아니라 object.fireevent("onmouseover")을 사용, 링크를 찾을 ChildObjects을 사용 (두 개의 서로 다른 테스트에서) 을 WebElement. OnClick이 작동 중이며 (즉, 탭을 누를 때 링크를 덮는 점선으로 표시된 상자)으로 링크가 표시되지만 메뉴 아래 남성 섹션이 표시되지 않습니다.

나는 끈기 있고 많이 울렸다. 그러나 QTP/UFT에서 FireEvent의 정확한 작업을 찾을 수 없었습니다.

위의 문제와 FireEvent의 튜토리얼을 해결하는 데 도움을주십시오.

편집 : IE 11을 테스트 용으로 사용하고 있습니다.

답변

2

내 문제에 대한 해결책을 찾았으며 완벽하게 작동하고 있습니다. 이 경우

Setting.WebPackage("ReplayType") = 2 
object.FireEvent "onmouseover" 
Setting.WebPackage("ReplayType") = 1 

object은 다음과 같습니다

Browser("name:=Online Shopping.*").Page("name:=Online Shopping.*").Link("innertext:=Men") 

이 시도하고 그것을 잘 노력하고 있습니다. 우리는 대안이 필요 없다고 생각합니다. 하지만 정말 모르겠다. Ctrl + Space는 UFT에서 작동하지 않는다. 이유를 모르겠다.

+2

ReplayType을 사용해 주셔서 감사합니다. ReplayType을 변경하거나 변경하지 않고 .FireEvent에 제대로 응답하지 않는 매우 완고한 AJAX 기반 팝업을 처리하기 위해 사용자 정의 MouseOver 메소드를 만들었습니다. FireEvent를 사용할 때 실제 사용자가 상호 작용할 수없는 객체를 조작 할 수있는 경우를 감시해야합니다. – Xiaofu

+0

나는 이것을 처리 할 것이다. 현재로서는 실제 사용자가 볼 수있는 객체 만 작업하고 있습니다. 경고 해 주셔서 감사합니다! – explorer

+1

그래도 문제가 해결되지 않으면 브라우저의 줌 레벨을 기본값 (Ctrl + 0)으로 복원 해보세요. 반나절 동안 이것을 알아 냈습니다. – William

0

이것은 실제로 사용중인 브라우저에 따라 다릅니다.

경고 :이 대답에 제시된 정보에 예외가 있고 또한 미래에 변경 될 수 있습니다. 대답은 기본적인 이해를 돕기위한 것이지만 특정 버전/사용 사례에 대한 동작을 확인하지 않으면 사실에 의존하지 않습니다.

원래 QTP의 FireEvent은 IE의 비표준 fireEvent 메서드를 호출해야합니다. Firefox 및 Chrome의 경우 dispatchEvent 표준을 사용하여 구현됩니다. 웹 사이트가 기대하는 이벤트를 확인해야합니다. 에서 설명한 것처럼 이벤트 모델 (표준 DOM 수준 2 및 Microsoft)을 혼합하면 상황이 복잡해집니다.

+0

답변 해 주셔서 감사합니다. 문제를 해결할 수는 없습니다. 문제는'object.FireEvent ("onmouseover")'아무것도하지 않는다는 것입니다. 브라우저에 대한 정보도 추가했습니다. – explorer

+0

@explorer 먼저 JavaScript의 브라우저 콘솔에서 작동하도록 제안합니다. 그런 식으로 UFT에서 수행해야 할 단계를 알 수 있습니다. – Motti

+0

좋아요, 나는 이것을 확실히 시도 할 것입니다. 고맙습니다. – explorer

3

모티 (Motti)는 이미 기술적 인 정의에 답변했지만 기능적 문제에 대한 해결책을 제시하려고합니다.

내 경험에 의하면 .FireEvent은 예상대로 작동하지 않는 경우가 많습니다. onmouseover과 같은 대안은 실제로 마우스를 원하는 위치로 이동시켜 사용자 행동을 조금 더 가깝게 시뮬레이트하는 것입니다. 우리의 프레임 워크에서 우리는 그냥 할 수있는 약간의 확장 기능이의 껍질을 벗겼다 다운 버전은 여기에 표시됩니다 :은 "전자"메뉴 오버레이를 가지고 다음과 같이 다음 할 수있는 예를 들어

Sub My_MouseOver(objSender) 
    Dim absX : absX = objSender.GetROProperty("abs_x") 
    Dim absY : absY = objSender.GetROProperty("abs_y") 
    Dim width : width = objSender.GetROProperty("width") 
    Dim height : height = objSender.GetROProperty("height") 
    Dim x : x = (absX + (width/2)) 
    Dim y : y = (absY + (height/2)) 
    Dim deviceReplay : Set deviceReplay = CreateObject("Mercury.DeviceReplay") 
    deviceReplay.MouseMove x, y 

    Reporter.ReportEvent micDone, "A step name", "A useful step description" 
End Sub 
RegisterUserFunc "Link", "MouseOver", "My_MouseOver" 
RegisterUserFunc "WebButton", "MouseOver", "My_MouseOver" 
RegisterUserFunc "WebElement", "MouseOver", "My_MouseOver" 

flipkart.com에 (분명 자신의 BrowserPage 정의를 대체) :

Browser("Flipkart").Page("Main Nav").Link("xpath:=//a[@data-tracking-id='electronics']").MouseOver 

을 원래 버전에서이 오류 처리 및 당신이 클릭 무엇인지를 알 수 있도록 사용자 정의 보고서의 다양한 여분의 비트는하지만 본질은이다 같은. 화면에 객체를 배치하고 중심을 계산 한 다음 마우스를 움직입니다. 새로 표시된 하위 요소 중 하나에서 .Click을 호출하기 전에 메뉴 오버레이가 표시 될 때까지 약간의 시간을 기다려야 할 수 있습니다.

+0

솔루션을 제공해 주셔서 감사합니다. 그것은 확실히 이런 식으로 작동합니다. 나는 이것을 시도 할 것이다. 하지만 지금은 실제로 onmouseover가 작동하지 않는 이유가 무엇인지 알아야합니다. 그것은 효과가 있었음에 틀림 없다. – explorer

+0

또한 정확한 의미는 아니지만 항상 의심 스럽습니다. ''** 브라우저 ** '와'** 페이지 **'의 차이점은 무엇입니까? 저는 이것이 계층 구조이고 그 물건이라는 것을 알고 있습니다. 그러나이 도구는 브라우저와 페이지를 어떻게 차별화하고 둘 다 사용 하는지를 구분합니다. 여기에 말씀해 주시겠습니까? 아니면 다른 질문을해야합니까? – explorer