Winappdriver 에서 우클릭 메뉴 클릭하기
winappdriver 에서 우클릭 메뉴를 클릭하고 싶었는데 도무지 클릭이 되지 않았다. 단순 요소로 클릭이 되지 않아서 xpath를 찾아서 해보았지만 그래도 실패.. 한참을 삽질하다가 중간에 스레드 슬립을 주어 시간을 좀 지연 시켰더니 겨우 됐다.
먼저 우클릭 하는 방법을 알아야 하므로 이 링크를 참고하였다
https://yonoo88.tistory.com/1322
Root 세션을 받아와야 한다. Setup에서 WindowSession에 받아옴
Name으로 클릭하는 방법
그냥 name 으로 클릭하는 방법이 가장 간단하다
예를 들면 이런식 - WindowSession.findElemnet(By.name("열기(O)")).click();
public void RightClick(String name) {
//우클릭 구현
WebElement elementLocator = winapp.findElementByName(name);
actions.contextClick(elementLocator).perform();
try {
Thread.sleep(1000); //name를 찾기위한 지연시간 추가
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//이름으로 클릭
WindowSession.findElemnet(By.name("열기(O)")).click();
}
이름을 못 찾으면 중간에 지연시간을 추가해주면 동작한다. 이런 식으로 하면 바로 클릭이 가능한데 가끔 저게 안먹히는 녀석들이 있다. 그럴 땐 xpath로 하는 방법이 있다
Xpath로 클릭하는 방법
파일 탐색기의 xpath를 찾아야 한다. WinAppDriverUiRecorder 를 실행 시킨 후 Record를 클릭한다음 탐색기를 실행한다. 그리고 우클릭을 해보면 xpath가 나오는데
저 xpath를 사용하여 클릭을 해주어야 한다. 일단 해당 폴더까지 마우스를 클릭까지 구현해준 다음 우클릭 코드를 작성
public void RightClick(String name) {
//우클릭 구현
WebElement elementLocator = winapp.findElementByName(name);
actions.contextClick(elementLocator).perform();
try {
Thread.sleep(1000); //name를 찾기위한 지연시간 추가
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//이름으로 클릭
WindowSession.findElementByXPath("//Menu[@ClassName=\"#32768\"][@Name=\"컨텍스트\"]/MenuItem[@Name=\"열기(O)\"]").click();
}
xpath를 보면 //Menu.. 부터 사용했으며 그 전 xpath는 Windowsession을 받아왔기 때문에 생략이 가능한 듯 하다.
코드를 실행해보면 우클릭 > 열기 버튼이 클릭되는데 열기 버튼을 누르기까지 약 20여초가 걸렸다. 왜 이렇게 오래 걸리는지 모르겠다. . 그렇다고 코드 중간에 Thread.sleep(1000)을 빼면 찾지를 못한다. xpath 를 탐색하는데 시간이 좀 걸리나 보다. 이것도 해결하는데 시간이 꽤 걸렸는데 안되는 이유는 2가지였었다.
1. xpath가 잘못된 경우 - xpath에 오타가 없는지 다른 xpath를 복사한건 아닌지 확인
2. 지연시간을 주지않아 동작하지 않은 경우
우클릭이 되지 않는다면 위 2가지를 다시 한번 살펴보아야 한다.
'지식메모 > 자동화' 카테고리의 다른 글
winappdriver 를 사용하여 윈도우 탐색기의 파일 목록을 가져오는 방법 (0) | 2022.06.09 |
---|---|
Winappdriver 에서 sendkeys 키보드 입력이 안되는 문제 해결 (0) | 2021.10.31 |
Winappdriver 주요 기능 사용법 in java (0) | 2019.10.02 |
Windows 10 에서 응용프로그램 AppID 확인하는 방법 (0) | 2019.09.03 |
Winappdriver로 Windows 10 계산기 자동화 테스트(CalculatorTest 튜토리얼 자동화 Java 예제 Eclipse에서 실행하기) (0) | 2019.08.09 |