Selenium 또는 Watin은 QTP의 설정과 같은 속성을 가지고 있습니까?
-
19-09-2019 - |
문제
응용 프로그램에는 모든 정보를 보내려면 실제 클릭이 필요한 버튼과 메뉴가 있으며 Fireevent Style Clicking은 절단되지 않는 것 같습니다. TestPartner와 QTP는 모두 실제 클릭을 사용할 수 있습니다. TestPartner는 항상 (느리게) 이것을 수행하고 QTP는 'ReplayType'을 1에서 2로 변경하여이를 수행합니다.
Setting.WebPackage("ReplayType") = 2
그래서 내 질문입니다. 어쨌든 Watin 또는 Selenium에서 실제 클릭을 얻을 수 있습니까? 나는 그 옵션을 찾을 수 없었습니다.
감사합니다, 조쉬
해결책
Selenium 2는 Selenium 1과 같은 클릭 및 키 스트로크를 종합하려는 대신 실제 클릭을 발사 할 수 있습니다. OS와의 많은 상호 작용을 기본적으로 수행하는 데 많은 상호 작용을합니다.
셀레늄 2는 제 2의 알파 단계에 있으며 현재 매우 안정적입니다. 셀레늄 2.0A2를 얻을 수 있습니다 http://code.google.com/p/selenium/downloads/list.
나는 .NET 바인딩 작업을 해왔으며 그들이가는 방식에 정말 만족합니다.
다른 팁
언제 ReplayType
설정되었습니다 장치 (2), QTP는 실제로 마우스를 움직이고 클릭을 수행합니다 (마우스 커서 이동을 볼 수 있음). 나는 셀레늄에 익숙하지 않지만 재생이 아는 바에서 순수한 JavaScript에서 이루어 지므로 DOM 이벤트를 발사 할 수 있습니다 (QTP와 마찬가지로 이벤트에서와 같이 이벤트가 발생합니다. ReplayMode
) 그러나 그것은 시뮬레이션 할 수 없습니다 진짜 QTP의 방식을 클릭하십시오.
Watin을 사용하면 IE Windows의 요소의 "기본"인터페이스에 도달 할 수 있습니다. 이를 사용하면 모든 요소의 화면 좌표를 얻을 수 있습니다.
using mshtml; //Add a reference to Microsoft.mshtml that comes with WatiN.
using WatiN.Core.Native.InternetExplorer;
public static System.Drawing.Point GetScreenPoint(IEElement element)
{
IHTMLElement nativeElement = element.AsHtmlElement;
IHTMLElement2 offsetElement = (IHTMLElement2)nativeElement;
IHTMLRect clientRect = offsetElement.getBoundingClientRect();
IHTMLDocument2 doc = (IHTMLDocument2)nativeElement.document;
IHTMLWindow3 window = (IHTMLWindow3)doc.parentWindow;
int windowLeft = window.screenLeft;
int windowTop = window.screenTop;
int elementLeft = clientRect.left;
int elementTop = clientRect.top;
int width = nativeElement.offsetWidth;
int height = nativeElement.offsetHeight;
int clickX = windowLeft + elementLeft + (width / 2);
int clickY = windowTop + elementTop + (height / 2);
return new System.Drawing.Point(clickX, clickY);
}
그것을 사용하려면 :
Button myButton = browser.Button(Find.ById("myButton"));
System.Drawing.Point clickPoint = GetScreenPoint((IEElement)myButton.NativeElement);
MyClick(clickPoint);
분명히 요소가 보이게되어야합니다. 나는 그 오프 핸드를 확인하는 방법을 모르겠지만, 몸의 스크롤 탑 및 스크롤 플로트 속성을 변경하여 스크롤 할 수 있다고 생각합니다.
실제로 클릭을 수행하는 방법이 필요하지만 이미 StackoverFlow에있는 답변이있을 수 있습니다.