모티 (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에 (분명 자신의 Browser
및 Page
정의를 대체) :
Browser("Flipkart").Page("Main Nav").Link("xpath:=//a[@data-tracking-id='electronics']").MouseOver
을 원래 버전에서이 오류 처리 및 당신이 클릭 무엇인지를 알 수 있도록 사용자 정의 보고서의 다양한 여분의 비트는하지만 본질은이다 같은. 화면에 객체를 배치하고 중심을 계산 한 다음 마우스를 움직입니다. 새로 표시된 하위 요소 중 하나에서 .Click
을 호출하기 전에 메뉴 오버레이가 표시 될 때까지 약간의 시간을 기다려야 할 수 있습니다.
ReplayType을 사용해 주셔서 감사합니다. ReplayType을 변경하거나 변경하지 않고 .FireEvent에 제대로 응답하지 않는 매우 완고한 AJAX 기반 팝업을 처리하기 위해 사용자 정의 MouseOver 메소드를 만들었습니다. FireEvent를 사용할 때 실제 사용자가 상호 작용할 수없는 객체를 조작 할 수있는 경우를 감시해야합니다. – Xiaofu
나는 이것을 처리 할 것이다. 현재로서는 실제 사용자가 볼 수있는 객체 만 작업하고 있습니다. 경고 해 주셔서 감사합니다! – explorer
그래도 문제가 해결되지 않으면 브라우저의 줌 레벨을 기본값 (Ctrl + 0)으로 복원 해보세요. 반나절 동안 이것을 알아 냈습니다. – William