Sikuli 튜토리얼 Selenium 자동화

Sikuli는 무엇입니까? Selenium?

Sikuli 오픈소스 GUI 기반 테스트 자동화 도구입니다. 주로 웹 페이지 요소와 상호 작용하고 윈도우 기반 팝업을 처리하는 데 사용됩니다. Sikuli는 "이미지 인식" 및 "제어 GUI" 기술을 사용하여 웹 페이지 요소와 윈도우 팝업과 상호 작용합니다. Sikuli에서 모든 웹 요소는 이미지로 가져와 프로젝트 내부에 저장됩니다.

Sikuli를 사용하는 방법 Selenium 웹드라이버

Sikuli는 Sikuli JAR 파일을 사용하여 Selenium Webdriver와 통합될 수 있습니다.

아래 시퀀스는 Selenium Webdriver로 Sikuli를 구성하는 단계 목록입니다.

1단계) 다운로드 아래 URL에서 Sikuli JAR 파일을 다운로드하고 ZIP 파일의 내용을 폴더에 추출합니다.

https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5

Sikuli를 다음과 함께 사용하세요 Selenium 웹드라이버

단계 2) 새 JAVA 프로젝트를 생성합니다. Eclipse 그리고 프로젝트를 마우스 오른쪽 버튼으로 클릭하여 빌드 경로 -> 빌드 경로 구성을 선택하여 Selenium JAR 파일과 함께 JAR 파일을 빌드 경로에 추가합니다.

Sikuli를 함께 사용하세요 Selenium 웹드라이버

프로젝트 빌드 경로에 JAR 파일을 추가하면 Sikuli에서 제공하는 클래스를 사용할 수 있습니다.

Sikuli의 스크린 클래스

Screen 클래스는 Sikuli에서 제공하는 모든 메서드의 기본 클래스입니다. Screen 클래스에는 클릭, 더블 클릭, 텍스트 상자에 입력 제공, 호버 등과 같이 화면 요소에서 일반적으로 수행되는 모든 작업에 대한 미리 정의된 메서드가 포함되어 있습니다. 아래는 Screen 클래스에서 제공하는 일반적으로 사용되는 메서드 목록입니다.

방법 기술설명 통사론
이 방법은 이미지 이름을 매개변수로 사용하여 화면의 요소를 클릭하는 데 사용됩니다. 스크린 s = 새로운 스크린();

s.click(“QA.png”);

더블클릭 이 방법은 요소를 더블클릭하는 데 사용됩니다. 매개변수로 이미지 이름을 허용합니다. 스크린 s = 새로운 스크린();

s.doubleClick("QA.png");

타입 이 메소드는 요소에 입력값을 제공하는 데 사용됩니다. 매개변수로 전송할 이미지 이름과 텍스트를 허용합니다.

s.type("QA.png","TEXT");

호버 이 방법은 요소 위로 마우스를 가져가는 데 사용됩니다. 이미지 이름을 매개변수로 허용합니다.

s.hover(“QA.png”);

Find 이 방법은 화면에서 특정 요소를 찾는 데 사용됩니다. 이미지 이름을 매개변수로 허용합니다.

s.find("QA.png");

Sikuli의 패턴 수업

패턴 클래스는 요소를 고유하게 식별하기 위해 이미지 파일을 추가 속성과 연결하는 데 사용됩니다. 이미지의 경로를 매개변수로 사용합니다.

패턴 p = new Pattern(“이미지 경로”);

Pattern 클래스에서 가장 일반적으로 사용되는 메서드는 다음과 같습니다.

방법 기술설명 통사론
파일 이름 가져오기 Pattern 객체에 포함된 파일 이름을 반환합니다.

패턴 p = new Pattern(“D:\Demo\QA.png”);

문자열 파일명 = p.getFileName();

비슷한 이 메소드는 유사성이 지정된 값으로 설정된 새 Pattern 객체를 반환합니다. 0에서 1 사이의 유사성 값을 매개변수로 허용합니다. Sikuli는 지정된 유사성 범위에 속하는 모든 요소를 ​​찾고 새 패턴 개체를 반환합니다.

패턴 p1 = p.similar(0.7f);

정확한 이 메소드는 유사성이 1로 설정된 새 패턴 객체를 반환합니다. 지정된 요소와 정확히 일치하는 항목만 찾습니다.

패턴 p1 = p.exact();

Sikuli를 사용한 파일 업로드에 대한 코드 예

아래 코드는 파일 업로드를 위해 Sikuli를 사용하는 방법을 설명합니다. Firefox.

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("https://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) 첫 번째 명령문에는 Chrome용 드라이버 실행 경로 설정이 포함됩니다.

System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");

단계 2) 다음과 같은 화면 캡처 도구를 사용하십시오. Snipping Tool 윈도우 팝업 'FileText'의 스크린샷을 찍으려면Box'와 '열기' 버튼이 있습니다.

Sikuli를 사용한 파일 업로드에 대한 코드 예

스크린샷은 다음과 같습니다:-

Sikuli를 사용한 파일 업로드에 대한 코드 예

Windows 파일 입력 텍스트 상자와 열기 버튼의 이미지는 'FileText'에 저장됩니다.Box.PNG' 및 'OpenButton.PNG'.

Sikuli는 이미지 인식 기술을 사용하여 화면의 요소를 인식합니다. 이미지만을 기반으로 화면의 요소를 찾습니다.

예: 메모장을 여는 작업을 자동화하려면 메모장의 바탕 화면 아이콘 이미지를 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로 Chrome 브라우저를 여는 작업이 포함됩니다. https://demo.guru99.com/test/image_upload/index.php

driver = new ChromeDriver();
driver.get("https://demo.guru99.com/test/image_upload/index.php");

위 URL은 파일 업로드 기능을 시연하기 위한 데모 애플리케이션입니다.

단계 5) 아래 명령문을 사용하여 파일 선택 버튼을 클릭하십시오.

driver.findElement(By.xpath(".//*[@id='photoimg']")).click();

단계 6) 윈도우 팝업이 나타날 때까지 기다리세요. Wait 메서드는 찾아보기 버튼을 클릭한 후 윈도우 팝업이 열리는 것과 관련된 지연을 처리하는 데 사용됩니다.

s.wait(fileInputTextBox, 20);

단계 7) 입력 파일 텍스트 상자에 파일 경로를 입력하고 열기 버튼을 클릭하세요.

s.type(fileInputTextBox, inputFilePath + "Test.docx");
s.click(openButton);

단계 8) 브라우저를 닫습니다

driver.close();

출력:

처음에 스크립트는 Chrome 브라우저를 엽니다.

Sikuli를 사용한 파일 업로드에 대한 코드 예

'파일 선택' 버튼을 클릭하면 Windows 파일 팝업 화면이 나타납니다. 파일 입력 텍스트 상자에 데이터를 입력하고 '열기' 버튼을 클릭합니다.

Sikuli를 사용한 파일 업로드에 대한 코드 예

파일 업로드가 완료되고 브라우저가 닫히면 아래 화면이 표시됩니다.

Sikuli를 사용한 파일 업로드에 대한 코드 예

결론

Sikuli는 웹 페이지와 윈도우 팝업에서 플래시 객체를 쉽게 처리하는 데 사용됩니다. Sikuli는 사용자 인터페이스의 요소가 자주 변경되지 않을 때 가장 잘 사용됩니다. 이러한 단점으로 인해 자동화 테스트 관점에서 Sikuli는 Robot 및 AutoIT와 같은 다른 프레임워크에 비해 선호도가 낮습니다.