자동화테스트/Selenium2019. 1. 15. 08:00

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 같은 다른 프레임 워크에 비해 선호도가 떨어집니다.

 


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
Posted by 프리스케이터