Selenium Webdriver에서 Sikuli를 사용하여 파일 업로드
시쿨리(Sikuli) 소개
Sikuli는 오픈 소스 GUI 기반 자동화 도구입니다. 웹 페이지의 요소와 상호 작용하고 창 기반 팝업을 처리하는 데 사용됩니다. '이미지 인식'기술을 사용하여 웹 페이지 및 창 팝업의 요소와 상호 작용합니다. Sikuli는 웹 페이지의 모든 요소를 이미지로 간주하고 해당 이미지를 기반으로 요소를 인식합니다. Sikuli는 UI 요소가 안정적이고 끊임없이 변화하지 않을 때 선호됩니다.
이 자습서에서는
Selenium Webdriver와의 Sikuli 통합
Sikuli는 Sikuli JAR 파일을 사용하여 Selenium webdriver와 통합 될 수 있습니다.
아래 시퀀스는 Selulium webdriver로 Sikuli를 구성하는 단계 목록입니다.
1 단계) 아래 URL에서 Sikuli JAR 파일을 다운로드 하십시오.
https://mvnrepository.com/artifact/com.sikulix/sikulixapi/1.1.0
ZIP 파일의 내용을 폴더로 추출하십시오.
2 단계) Eclipse에서 새 JAVA 프로젝트를 만들고 프로젝트에서 오른쪽 클릭을 사용하여 셀 경로 jar 파일과 함께 빌드 경로에 JAR 파일 추가 -> 빌드 경로 -> 빌드 경로 구성
프로젝트 빌드 경로에 JAR 파일을 추가하면 Sikuli에서 제공하는 클래스를 사용할 수 있습니다.
Sikuli의 스크린 클래스
Screen 클래스는 Sikuli가 제공하는 모든 메소드의 기본 클래스입니다. Screen 클래스에는 클릭, 더블 클릭, 텍스트 상자에 입력 제공, 호버 등 화면 요소에 대해 일반적으로 수행되는 모든 작업에 대해 미리 정의 된 메서드가 포함되어 있습니다. Screen 클래스에서 제공하는 일반적으로 사용되는 메서드 목록은 다음과 같습니다.
Method |
설명 |
구문 |
Click |
이 메소드는 이미지 이름을 매개 변수로 사용하여 화면의 요소를 클릭하는 데 사용됩니다. |
Screen s = new Screen(); s.click("QA.png"); |
doubleClick |
이 메소드는 요소를 두 번 클릭하는 데 사용됩니다.이미지 이름을 매개 변수로 사용합니다. |
Screen s = new Screen(); s.doubleClick("QA.png"); |
Type |
이 메소드는 요소에 입력 값을 제공하는 데 사용됩니다. 매개 변수로 보낼 이미지 이름과 텍스트를 허용합니다. |
s.type ( "QA.png", "TEXT"); |
Hover |
이 메소드는 요소 위로 마우스를 가져갈 때 사용됩니다. 이미지 이름을 매개 변수로 사용합니다. |
s.hover ( "QA.png"); |
Find |
이 메소드는 화면에서 특정 요소를 찾는 데 사용됩니다. 이미지 이름을 매개 변수로 사용합니다. |
s.find ( "QA.png"); |
Sikuli의 Pattern class
Pattern 클래스는 요소를 고유하게 식별하는 추가 속성과 이미지 파일을 연결하는 데 사용됩니다. 이미지의 경로를 매개 변수로 사용합니다.
Pattern p = new Pattern("Path of image");
다음은 가장 일반적으로 사용되는 Pattern 클래스의 메서드입니다.
방법 |
기술 |
통사론 |
getFileName |
Pattern 객체에 포함 된 파일 이름을 반환합니다. |
Pattern p = new Pattern("D:\Demo\QA.png"); String filename = p.getFileName(); |
similar |
이 메서드는 유사도가 지정된 값으로 설정된 새 Pattern 객체를 반환합니다. 0에서 1 사이의 유사성 값을 매개 변수로 사용합니다. Sikuli는 지정된 유사 범위 내에있는 모든 요소를 찾고 새 패턴 객체를 반환합니다. |
Pattern p1 = p.similar(0.7f); |
Exact |
이 메서드는 유사성이 1 인 새 패턴 객체를 반환합니다. 지정된 요소와 정확히 일치하는 항목 만 찾습니다. |
Pattern p1 = p.exact(); |
Sikuli를 사용한 파일 업로드의 코드 예제
아래 코드는 파이어 폭스에서 파일 업로드를 위해 Sikuli를 사용하는 방법을 설명합니다.
package com.sikuli.demo;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.sikuli.script.FindFailed;
import org.sikuli.script.Pattern;
import org.sikuli.script.Screen;
import org.openqa.selenium.chrome.ChromeDriver;
public class SikuliDemo {
public static void main(String[] args) throws FindFailed {
System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
String filepath = "D:\\Guru99Demo\\Files\\";
String inputFilePath = "D:\\Guru99Demo\\Files\\";
Screen s = new Screen();
Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG");
Pattern openButton = new Pattern(filepath + "OpenButton.PNG");
WebDriver driver;
// Open Chrome browser
driver = new ChromeDriver();
driver.get("http://demo.guru99.com/test/image_upload/index.php");
// Click on Browse button and handle windows pop up using Sikuli
driver.findElement(By.xpath(".//*[@id='photoimg']")).click();
s.wait(fileInputTextBox, 20);
s.type(fileInputTextBox, inputFilePath + "Test.docx");
s.click(openButton);
// Close the browser
driver.close();
}
}
코드 설명 :
1 단계) 첫 번째 문은 크롬에 대한 드라이버 실행 경로를 설정합니다.
System.setProperty ( "webdriver.chrome.driver", "D : \\ chromedriver.exe");
2 단계) Snipping Tool과 같은 화면 그라디언트 도구를 사용하여 팝업창 'FileTextBox'와 'Open'버튼의 스크린 샷을 가져옵니다.
이것이 스크린 샷의 모습입니다 :
윈도우 파일 입력란의 이미지와 열기 버튼은 'FileTextBox.PNG'와 'OpenButton.PNG'에 저장됩니다.
Sikuli는 Image Recognition 기술을 사용하여 화면의 요소를 인식합니다. 그것은 단지 이미지를 기반으로 화면에 요소를 찾습니다.
예 : 메모장을 여는 작업을 자동화하려면 메모장의 바탕 화면 아이콘 이미지를 PNG 파일에 저장하고 클릭 작업을 수행해야합니다.
우리의 경우 파일 입력 텍스트 상자를 인식하고 저장된 이미지를 사용하여 Windows 팝업에서 버튼을 엽니다. 화면 캡처가 이미지 캡처에서 스크립트 실행으로 변경되면 Sikuli의 동작이 일치하지 않게됩니다. 따라서 항상 이미지를 캡처하는 동일한 해상도로 테스트 스크립트를 실행하는 것이 좋습니다. 이미지의 픽셀 크기가 변경되면 Sikuli는 FindFailed 예외를 발생시킵니다.
3 단계) 다음 문에는 Screen 및 Pattern 클래스에 대한 객체 생성이 포함됩니다. 새 화면 개체를 만듭니다. 업로드 할 파일의 경로를 매개 변수로 Pattern 객체에 설정하십시오.
Screen s = new Screen();
Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG");
Pattern openButton = new Pattern(filepath + "OpenButton.PNG");
4 단계) 다음 문장은 URL이있는 크롬 브라우저를 여는 과정입니다. http://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver();
driver.get("http://demo.guru99.com/test/image_upload/index.php");
위 URL은 파일 업로드 기능을 시연하는 데모 응용 프로그램입니다.
5) 아래 명령문을 사용하여 파일 선택 버튼을 클릭하십시오.
driver.findElement (By.xpath ( ".//*[ id = 'photoimg']")). click ();
6 단계) 창 팝업이 나타날 때까지 기다립니다. 대기 메서드는 찾아보기 단추를 클릭 한 후 창을 여는 것과 관련된 지연을 처리하는 데 사용됩니다.
s.wait (fileInputTextBox, 20);
단계 7) 입력 파일 텍스트 상자에 파일 경로를 입력하고 열기 버튼을 클릭하십시오.
s.type (fileInputTextBox, inputFilePath + "Test.docx");
s.click (openButton);
8 단계) 브라우저 닫기
driver.close ();
산출:
처음에는 스크립트가 크롬 브라우저를 엽니 다.
'파일 선택'버튼을 클릭하면 윈도우 파일 팝업 화면이 나타납니다. 파일 입력 텍스트 상자에 데이터를 입력하고 '열기'버튼을 클릭하십시오.
파일 업로드가 완료되고 브라우저를 닫으면 아래 화면이 표시됩니다.
결론:
Sikuli는 웹 페이지 및 창 팝업에서 플래시 객체를 쉽게 처리하는 데 사용됩니다. Sikuli는 사용자 인터페이스의 요소가 자주 변경되지 않을 때 가장 잘 사용됩니다. 자동화 테스팅의 관점에서 볼 때, Sikuli는 Robot 및 AutoIT와 같은 다른 프레임 워크에 비해 선호도가 떨어집니다.
'자동화테스트 > Selenium' 카테고리의 다른 글
셀레늄 대 HP UFT (QTP) 차이점 (0) | 2019.01.19 |
---|---|
Selenium에서 요소 찾기 및 요소들 찾기 (0) | 2019.01.17 |
Selenium Webdriver에서 페이지를 위로 또는 아래로 스크롤 (0) | 2019.01.14 |
Selenium WebDriver에서 객체 저장소 만들기 XML 및 속성 파일 (1) | 2019.01.13 |
초보자를위한 셀렌 C샵 Webdriver 튜토리얼 (0) | 2019.01.12 |