자동화테스트/Selenium2018. 12. 17. 08:00

왜 로봇 클래스인가?

특정 Selenium Automation Tests에서는 키보드 나 마우스를 제어하여 다운로드 팝업, 경고, 팝업 인쇄 등과 같은 OS 창 또는 메모장, Skype, 계산기 등과 같은 기본 운영 시스템 응용 프로그램과 상호 작용할 필요가 있습니다.

Selenium Webdriver는 이러한 OS 팝업 / 응용 프로그램을 처리 할 수 ​​없습니다.

에서 자바 버전 1.3 로봇 클래스가 도입되었다. Robot Class는 OS 팝업 / 응용 프로그램을 처리 할 수 ​​있습니다.

이 튜토리얼에서는,

로봇 클래스의 장점

  1. Robot Class는 키보드 및 마우스 이벤트를 시뮬레이션 할 수 있습니다.
  2. Robot 클래스는 Selenium 웹 드라이버를 사용할 때 파일 업로드 / 다운로드를 도울 수 있습니다.
  3. Robot Class는 현재 자동화 프레임 워크 (키워드, 데이터 기반 또는 하이브리드)와 쉽게 통합 될 수 있습니다.

로봇 클래스의 문서화

Robot Class 문서는 Robot Class에서 사용할 수있는 모든 메서드와 함수의 기본 정의, 구문 및 사용법을 이해하는 데 도움이됩니다. 당신의 설명서를 볼 수 있습니다 공식 오라클 웹 사이트 , 또는 당신은 당신의 로컬 컴퓨터에있는 문서를 만들 수 있습니다.

로컬 컴퓨터에서 설명서를 만들려면 아래 단계를 수행하십시오.

1 단계) JDK 폴더에 src.zip 파일이 있습니다. src.zip을 복사하고 다른 폴더 나 디렉토리에서 추출하십시오 (예 : D : 또는 E :).

Selenium Webdriver의 로봇 클래스

2 단계) (path till src folder)/src/java/awt 로 가서 src folder 압축을 풀어라

3 단계) awt 폴더의 현재 위치를 복사하고 명령 프롬프트를 엽니 다.

4 단계) cmd에서 현재 디렉토리 위치를 awt 폴더로 변경하고 아래에 표시된대로 'javadoc * .java'를 입력하십시오.

Selenium Webdriver의 로봇 클래스

시스템이 처리되기를 기다리십시오. 일단 완료되면 awt 폴더에 몇 개의 HTML 파일이 보입니다.

5 단계) index.html 열기

Selenium Webdriver의 로봇 클래스

6 단계) 이제 awt 패키지의 전체 문서를 볼 수 있습니다. 왼쪽 네비게이션 바에서 '로봇'하이퍼 링크 (아래 그림 1 참조)를 클릭하십시오.

Selenium Webdriver의 로봇 클래스

여기에서 로봇 클래스의 모든 메소드와 인터페이스를 볼 수 있습니다 (위의 이미지에 표시된 2 참조).

로봇 클래스의 내부 메소드와 사용법 이해하기

Robot Class 메서드는 브라우저 자동화를 수행하는 동안 키보드 / 마우스 이벤트와 상호 작용하는 데 사용할 수 있습니다. 또는 AutoIT 반입은 사용할 수 있지만 그 단점은 Windows에서만 작동합니다 실행 파일 (EXE)을 생성하는, 그래서 그것을 사용하는 것이 옵션이 아닙니다.

웹 자동화 중 일반적으로 사용되는 로봇 클래스의 몇 가지 방법 :

  • keyPress () : 예 : robot.keyPress (KeyEvent.VK_DOWN) : 키보드의 아래쪽 화살표 키를 누른 상태에서이 메서드를 호출합니다.
  • mousePress () :  : robot.mousePress (InputEvent.BUTTON3_DOWN_MASK) :이 메서드는 마우스 오른쪽 버튼을 누릅니다.
  • mouseMove () :  : robot.mouseMove (point.getX (), point.getY ()) : 마우스 포인터를 지정된 X 및 Y 좌표로 이동합니다.
  • keyRelease () : 예 : robot.keyRelease (KeyEvent.VK_DOWN) :이 메서드는 키보드의 아래쪽 화살표 키를 놓을 때 사용합니다.
  • mouseRelease () : 예 : robot.mouseRelease (InputEvent.BUTTON3_DOWN_MASK) :이 메서드는 마우스의 오른쪽 클릭을 해제합니다

Robot 클래스를 사용하여 일반적인 사용 사례를 자동화하는 샘플 코드

  • 웹 사이트 http://spreadsheetpage.com/index.php/file/C35/P10/의 예를 들어 봅시다 . 웹 요소 ( .//a[[href=contains(text(),'yearly- calendar.xls '] ) OS 다운로드 팝업이 나타납니다.
  • 이를 처리하기 위해 우리는 Robot 클래스를 사용합니다 (코드에서 Robot 클래스의 인스턴스를 생성하면 Robot robot = new Robot () ). JDK의 AWT 패키지에 존재하는 Robot 클래스.
  • 우리가 사용하는 키보드의 아래쪽 화살표 키를 누르기 위해 ( robot.keyPress (KeyEvent.VK_DOWN))
  • 키보드의 Tab 키를 누르기 위해서 (우리는 robot.keyPress (KeyEvent.VK_TAB)를 사용 합니다)
  • Enter 키를 누르기 위해 우리는 ( robot.keyPress (KeyEvent.VK_ENTER))를 사용합니다.

다음은 샘플 코드입니다.

import java.awt.AWTException;	
import java.awt.Robot;	
import java.awt.event.KeyEvent;	
import org.openqa.selenium.By;	
import org.openqa.selenium.WebDriver;	
import org.openqa.selenium.firefox.FirefoxDriver;	

class Excercise1 {	

      public static void main(String[] args) throws AWTException, InterruptedException {	
           WebDriver driver = new FirefoxDriver();	
           driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url	
           driver.findElement(By.xpath(".//a[@href=contains(text(),'yearly-calendar.xls')]")).click();	
           Robot robot = new Robot();  // Robot 클래스는 AWT Exception을 발생시킵니다.
           Thread.sleep(2000); // Thread.sleep throws InterruptedException	
           robot.keyPress(KeyEvent.VK_DOWN);  // press arrow down key of keyboard to navigate and select Save radio button	
           
           Thread.sleep(2000);  // sleep has only been used to showcase each event separately	
           robot.keyPress(KeyEvent.VK_TAB);	
           Thread.sleep(2000);	
           robot.keyPress(KeyEvent.VK_TAB);	
           Thread.sleep(2000);	
           robot.keyPress(KeyEvent.VK_TAB);	
           Thread.sleep(2000);	
           robot.keyPress(KeyEvent.VK_ENTER);	
       // 위의 선택된 동작을 수행하기 위해 키보드의 Enter 키를 누릅니다.
     }	 
 }	

실제 상황을 보려면이 비디오를 확인하십시오.

TestNG를 사용하여 로봇 클래스 코드를 실행하는 방법

이후 Robot 클래스의 기본 방법을 알고 있으므로 몇 가지 더 복잡한 메소드를 이해하자.

웹 요소에서 클릭하기 위해 click 메소드 를 사용 하지 않으려 한다고 가정 하십시오 .

이 경우 Robot 클래스의 mouseMove 메서드를 사용할 수 있습니다.

1 단계) mouseMove 메서드는 x 및 y 좌표를 robot.mouseMove (630, 420) 와 같은 매개 변수로 사용합니다. 여기서 630은 x 축을 나타내고 420은 y 축을 나타냅니다. 따라서이 메서드는 마우스 포인터를 현재 위치에서 언급 한 x 및 y 교차점으로 이동합니다.

2 단계) 다음으로 마우스 버튼을 눌러야합니다. robot.mousePress (InputEvent.BUTTON1_DOWN_MASK) 와 같은 메소드 mousePress를 사용할 수 있습니다 .

3 단계) 를 누른 후 마우스를 놓아야합니다. 우리는 마우스의 왼쪽 클릭을 해제하기 위해 robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK )를 사용할 수 있습니다 .

testNG를 사용하여 코드 실행 :

Testng을 사용하여 코드를 실행 하려면 testNG의 maven 종속성 또는 TestNG jar 파일의 참조 된 라이브러리가 필요합니다.

테스트 종속성 :

<dependency>	
<groupId> org.testng </ groupId> <artifactId> testng </ artifactId> <version> 6.1.1 </ version> </ dependency>

maven 종속성 또는 jar 파일을 추가 한 후 testNG의 Test 주석을 가져와야합니다. 일단 모두 끝나면 프로그램 코드를 마우스 오른쪽 버튼으로 클릭하고 Run As를 클릭 한 다음 TestNG ...를 클릭하면 코드가 testNG API를 사용하여 실행을 시작합니다.

여기에 코드가있다.

import java.awt.AWTException;	
import java.awt.Robot;	
import java.awt.event.InputEvent;	
import java.awt.event.KeyEvent;	
import org.openqa.selenium.WebDriver;	
import org.openqa.selenium.firefox.FirefoxDriver;	
import org.testng.annotations.Test;	

public class Excersise1 {	

    @Test	
    public static void  execution() throws InterruptedException, AWTException {
        WebDriver driver = new FirefoxDriver();	
        driver.manage().window().maximize();	
        driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url	
        Robot robot = new Robot();	
        robot.mouseMove(630, 420); // 특정 위치로 마우스 포인트 이동		
        robot.delay(1500);        // delay is to make code wait for mentioned milliseconds before executing next step	
        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); // press left click	
        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); // release left click	
        robot.delay(1500);	
        robot.keyPress(KeyEvent.VK_DOWN); // 키보드의 화살표 키를 눌러 라디오 저장 버튼을 선택하십시오.
        Thread.sleep(2000);	
        robot.keyPress(KeyEvent.VK_ENTER);	
        // 위의 선택된 동작을 수행하기 위해 키보드의 Enter 키를 누릅니다.	
    }	
}	

실제 상황을 보려면이 비디오를 확인하십시오.

로봇 클래스의 단점

로봇 프레임 워크에는 다음과 같은 몇 가지 단점이 있습니다.

  1. 키워드 / 마우스 이벤트는 Window의 현재 인스턴스에서만 작동합니다. 예를 들어, 코드가 어떤 로봇 클래스 이벤트를 수행 중이며 코드 실행 중에 사용자가 다른 화면으로 이동했다면 그 화면에서 키워드 / 마우스 이벤트가 발생합니다.
  2. mouseMove와 같은 대부분의 메서드는 화면 해상도에 따라 다르므로 한 컴퓨터에서 작동하는 코드가 다른 컴퓨터에서 작동하지 않을 수도 있습니다.

개요

AWT 패키지의 Robot 클래스는 OS / 윈도우 및 기본 응용 프로그램과 상호 작용할 키보드 / 마우스 이벤트를 생성하는 데 사용됩니다.

로봇의 주 목적은 자바 플랫폼에서 셀레늄 자동 테스트 프로젝트 빌드를 지원하는 것입니다.

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