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

Selenium Grid 란 무엇입니까?

Selenium Grid는 여러 브라우저, 운영 체제 및 시스템에서 동시에 여러 테스트를 실행하는 Selenium Suite의 일부입니다.

Selenium Grid에는 이전 버전의 Grid 1과 최신 Grid 2의 두 가지 버전이 있습니다. 그리드 1은 Selenium 팀에 점차적으로 사용되지 않으므로 Grid 2에만 초점을 맞 춥니 다.

셀렌 그리드 튜토리얼 : 예제와 단계별 가이드

셀레늄 그리드는 단지라는 단일 시스템에서 테스트 실행 허브 노드 개념을 사용하여 허브를 하지만, 실행이라는 서로 다른 시스템에 의해 수행됩니다 노드

Selenium Grid를 언제 사용합니까?

다음 중 하나 또는 둘 모두를 수행하려면 Selenium Grid를 사용해야합니다.

  • 동시에 여러 브라우저, 운영 체제 및 시스템에 대해 테스트를 실행하십시오. 이렇게하면 테스트 중인 응용 프로그램이 광범위한 브라우저 -OS 조합과 완벽하게 호환 될 수 있습니다.
  • 테스트 스위트 실행 시간을 절약하십시오 . 한 번에 4 개의 테스트를 실행하도록 Selenium Grid를 설정하면 전체 스위트를 4 배 빠르게 완료 할 수 있습니다.

 

그리드 1.0 대 그리드 2.0

다음은 Selenium Grid 1과 2의 주요 차이점입니다.

그리드 1

그리드 2

Selenium Grid 1에는 Selenium RC 서버와 다른 리모콘이 있습니다. 두 가지 프로그램입니다.

Selenium Grid 2가 Selenium Server jar 파일과 함께 번들되었습니다.

Grid 1을 사용하려면 먼저 ApacheAnt 를 설치하고 구성해야합니다 .

Grid 2에 Apache Ant를 설치할 필요가 없습니다.

Selenium RC 명령 / 스크립트 만 지원할 수 있습니다.

Selenium RC 및 WebDriver 스크립트를 모두 지원할 수 있습니다.

원격 제어마다 하나의 브라우저 만 자동화 할 수 있습니다.

하나의 리모콘으로 최대 5 개의 브라우저를 자동화 할 수 있습니다.

셀레늄 그리드 아키텍처

Selenium Grid에는 허브 및 노드 아키텍처가 있습니다.

허브

  • 허브는 테스트를로드하는 중심 지점입니다.
  • 그리드에는 하나의 허브 만 있어야합니다.
  • 허브는 OS가 Windows 7이고 브라우저가 IE 인 단일 컴퓨터에서만 실행됩니다.
  • 허브가있는 시스템에서 테스트가 실행되지만 브라우저에서 브라우저가 자동으로 표시됩니다.

노드

  • 노드는 허브에로드 한 테스트를 실행할 셀레늄 인스턴스입니다.
  • 그리드에는 하나 이상의 노드가있을 수 있습니다.
  • 플랫폼과 브라우저가 다른 여러 컴퓨터에서 노드를 시작할 수 있습니다.
  • 노드를 실행하는 시스템은 허브와 동일한 플랫폼 일 필요는 없습니다.

셀레늄 그리드는 두 가지 방법으로 설정할 수 있습니다. 하나는 명령 줄을 통해, 다른 하나는 JSON 구성 파일을 통해.

셀레늄 그리드 설정 방법 명령 줄 사용

이 섹션에서는 2 대의 컴퓨터를 사용합니다. 첫 번째 시스템은 다른 시스템이 노드를 실행하는 동안 허브를 실행하는 시스템입니다. 간단히하기 위해 허브가 실행되는 시스템을 "시스템 A"로, 노드가 실행되는 시스템은 "시스템 B"로 지정합니다. IP 주소를 기록하는 것도 중요합니다. 머신 A의 IP 주소는 192.168.1.3이고 머신 B의 IP 주소는 192.168.1.4입니다.

1 단계

여기 에서 Selenium Server를 다운로드 하십시오 .

셀렌 그리드 튜토리얼 : 예제와 단계별 가이드

2 단계

Selenium Server .jar 파일은 하드 드라이브의 어느 위치 에나 둘 수 있습니다. 그러나이 튜토리얼의 목적을 위해 A 머신과 B 머신의 C 드라이브에 배치하십시오. 이제 Selenium Grid 설치가 완료되었습니다. 다음 단계는 허브와 노드를 시작합니다.

3 단계

  • 우리는 이제 허브를 시작할 것입니다. 컴퓨터 A로 이동하십시오. 명령 프롬프트를 사용하여 Serenium Server를 배치 한 디렉토리이기 때문에 Machine A의 -C 드라이브의 루트로 이동하십시오.
  • 명령 프롬프트에서 java -jar selenium-server-standalone-2.30.0.jar -role hub를 입력합니다.
  • 허브가 성공적으로 시작되어야합니다. 명령 프롬프트는 아래 이미지와 유사해야합니다.

셀렌 그리드 튜토리얼 : 예제와 단계별 가이드

4 단계

허브가 실행 중인지 확인하는 또 다른 방법은 브라우저를 사용하는 것입니다. 기본적으로 Selenium Grid는 웹 인터페이스에 Machine A의 포트 4444를 사용합니다. 간단히 브라우저를 열고 http : // localhost : 4444 / grid / console 로 가십시오 .

셀렌 그리드 튜토리얼 : 예제와 단계별 가이드

또한 브라우저를 시작하고 "iporhostnameofmachineA"가 허브가 실행중인 시스템의 IP 주소 또는 호스트 이름이어야하는 위치로 이동하여 머신 B가 허브의 웹 인터페이스에 액세스 할 수 있는지 확인할 수 있습니다. 머신 A의 IP 주소는 192.168.1.3이므로 머신 B의 브라우저에서 http://192.168.1.3:4444/grid/console을 입력해야합니다.

5 단계

  • 허브가 이미 설정되었으므로 노드를 시작합니다. B 시스템으로 이동하여 명령 프롬프트를 시작하십시오.
  • C 드라이브의 루트로 이동하여 아래 코드를 입력하십시오. IP 주소 192.168.1.3을 사용 했으므로 허브가 실행됩니다. 무료 포트 번호를 선택할 수도 있지만 포트 5566을 사용했습니다.
  • 참고 : Firefox를 사용하는 경우 Gecko 드라이버에 대한 경로를 지정해야합니다. 사용되어야하는 업데이트 된 코드는 다음과 같습니다.
java -Dwebdriver.gecko.driver="C:\geckodriver.exe" -jar selenium-server-standalone-3.4.0.jar -role webdriver -hub http://192.168.1.3:4444/grid/register -port 5566

셀렌 그리드 튜토리얼 : 예제와 단계별 가이드

  • Enter 키를 누르면 명령 프롬프트가 아래 이미지와 유사해야합니다.

셀렌 그리드 튜토리얼 : 예제와 단계별 가이드

6 단계

Selenium Grid 웹 인터페이스로 이동하여 페이지를 새로 고칩니다. 너는 이와 비슷한 것을보아야한다.

셀렌 그리드 튜토리얼 : 예제와 단계별 가이드

이 시점에서 이미 간단한 그리드를 구성했습니다. 이제 Machine B에서 원격으로 테스트를 실행할 준비가되었습니다.

그리드에서 실행할 수있는 테스트 스크립트 설계

그리드에서 실행될 테스트 스크립트를 디자인하려면 DesiredCapabilites 와 RemoteWebDriver 객체를 사용해야 합니다.

  • DesiredCapabilites 는 자동화 할 브라우저 및 운영 체제 유형을 설정하는 데 사용됩니다
  • RemoteWebDriver 는 테스트를 실행할 노드 (또는 시스템)를 설정하는 데 사용됩니다.

DesiredCapabilites 개체 를 사용하려면 먼저이 패키지를 가져와야합니다.

셀렌 그리드 튜토리얼 : 예제와 단계별 가이드

RemoteWebDriver 개체 를 사용하려면 이러한 패키지를 가져와야합니다.

셀렌 그리드 튜토리얼 : 예제와 단계별 가이드

DesiredCapabilites 객체 사용

Grid의 웹 인터페이스로 이동하여 자동화하려는 브라우저의 이미지 위로 마우스를 가져갑니다. 의 양지 플랫폼 과 browserName 툴팁으로 보여합니다.

셀렌 그리드 튜토리얼 : 예제와 단계별 가이드

이 경우 플랫폼은 "XP"이고 browserName은 "Firefox"입니다.

아래에 표시된대로 WebDriver에서 플랫폼과 browserName을 사용합니다 (물론 필요한 패키지를 먼저 가져와야합니다).

셀렌 그리드 튜토리얼 : 예제와 단계별 가이드

RemoteWebDriver 개체 사용

RemoteWebDriver에 필요한 패키지를 가져온 다음 위에 작성한 DesiredCapabilities 객체를 RemoteWebDriver 객체의 매개 변수로 전달합니다.

셀렌 그리드 튜토리얼 : 예제와 단계별 가이드

그리드에서 샘플 테스트 케이스 실행하기

아래는 Machine A의 Eclipse에서 생성 할 수 있는 간단한 WebDriver Testng 코드입니다. 일단 실행하면 Machine B에서 자동화가 수행됩니다.

셀렌 그리드 튜토리얼 : 예제와 단계별 가이드

 검사는 통과해야합니다.

셀렌 그리드 튜토리얼 : 예제와 단계별 가이드

셀렌 그리드 튜토리얼 : 예제와 단계별 가이드

JSON 파일을 사용하는 Selenium 그리드 구성 :

JSON은 Javascript Object Notation의 약자입니다. 브라우저와 웹 서버 간의 데이터 교환에 사용되는 표준 형식입니다. Selenium에는 JSON 구성 파일이 내장되어있어 셀렌 그리드를 설정할 수 있습니다.

다음은 JSON 구성 파일을 사용하여 셀렌 그리드를 구성하는 단계입니다.

1 단계) 아래 경로를 사용하여 JSON 구성 파일의 코드를 다운로드하십시오. https://github.com/SeleniumHQ/selenium/blob/master/java/server/src/org/openqa/grid/common/defaults/DefaultHub.json

여기에 코드가있다.


	  "port": 4444,
	  "newSessionWaitTimeout": -1,
	  "servlets" : [],
	  "withoutServlets": [],
	  "custom": {},
	  "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
	  "registryClass": "org.openqa.grid.internal.DefaultGridRegistry",
	  "throwOnCapabilityNotPresent": true,
	  "cleanUpCycle": 5000,
	  "role": "hub",
	  "debug": false,
	  "browserTimeout": 0,
	  "timeout": 1800
}

2 단계) 메모장과 같은 텍스트 편집기에서 확장명이 '.json'인 코드를 복사하여 붙여 넣습니다.

3) 명령 프롬프트를 사용하여 아래 명령을 사용하여 허브를 시작합니다.

java -jar selenium-server-standalone-2.53.1.jar -role hub -hubConfig hubconfig.json

참고 : 셀레늄 독립 실행 형 jar 파일 및 json 파일이 같은 디렉터리에 있어야합니다.

4 단계) 허브가 성공적으로 설정되었음을 나타내는 아래 화면이 나타납니다.

5 단계) 웹 브라우저를 열고 아래 URL에 연결하십시오.

http://192.168.43.223:4444/grid/console

참고 : URL은 컴퓨터마다 다를 수 있습니다. 위의 화면에서 '등록해야하는 노드는 다음'URL을 사용해야합니다.

6 단계) 허브가 가동 중임을 나타내는 Grid Console 화면이 나타납니다.

JSON을 사용하여 NODES 구성 :

1 단계) Selenium에서 제공하는 샘플 노드 설정 파일을 https://github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/java/server/src/org/openqa/grid/common/에서 다운로드하십시오. defaults / DefaultNode.json

참고 : SELENIUM 3.0 이상을 사용하는 경우 아래 JSON 파일을 사용해야합니다.

https://github.com/SeleniumHQ/selenium/blob/master/java/server/src/org/openqa/grid/common/defaults/ DefaultNodeWebDriver.json

2 단계) 코드를 복사하여 메모장과 같은 텍스트 편집기에 붙여넣고 확장명이 '.json'인 파일을 저장합니다.

3 단계)

명령 프롬프트에서 아래 명령을 실행하십시오.

Java-Dwebdriver.chrome.driver="chromedriver.exe" -Dwebdriver.ie.driver="IEDriverServer.exe" -Dwebdriver.gecko.driver="geckodriver.exe" -jar selenium-server-standalone-2.53.1.jar -role node -nodeConfig node1.json

참고 : 명령을 실행하기 전에 각 브라우저의 드라이버가 로컬 시스템 디렉토리에 다운로드되었는지 확인하십시오

4 단계) Enter 키를 누르면 아래 화면이 나타납니다.

5 단계) 그리드 콘솔로 이동하여 노드가 성공적으로 구성되었는지 확인합니다

브라우저는 그리드 콘솔에 표시됩니다. 따라서 노드가 성공적으로 구성되었는지 확인할 수 있습니다.

셀렌 그리드의 샘플 테스트 사례 :

 package com.objectrepository.demo;
 import org.openqa.selenium.*;
 import org.openqa.selenium.remote.DesiredCapabilities;
 import java.net.MalformedURLException;
 import java.net.URL;
 import org.openqa.selenium.remote.RemoteWebDriver;
 import org.testng.Assert;
 import org.testng.annotations.*;

 public class SeleniumGrid {

     WebDriver driver;
     String baseURL, nodeURL;

     @BeforeTest
     public void setUp() throws MalformedURLException {
         baseURL = "http://demo.guru99.com/test/guru99home/";
         nodeURL = "http://192.168.43.223:4444/wd/hub";
         DesiredCapabilities capability = DesiredCapabilities.chrome();
         capability.setBrowserName("chrome");
         capability.setPlatform(Platform.WIN10);
         driver = new RemoteWebDriver(new URL(nodeURL), capability);
     }

     @AfterTest
     public void afterTest() {
         driver.quit();
     }
     @Test
     public void sampleTest() {
         driver.get(baseURL);
         driver.get(baseURL);

         if (driver.getPageSource().contains("MOBILE TESTING")) {
             Assert.assertTrue(true, "Mobile Testing Link Found");
         } else {
             Assert.assertTrue(false, "Failed: Link not found");
         }

     }

 }

위의 코드는 크롬 브라우저를 시작하고 'baseURL'변수에 지정된 URL로 이동합니다. '모바일 테스트'라는 링크 이름이 페이지에 표시되는지 확인했습니다.

'nodeURL'변수의 URL을 수정하여 원격 시스템의 IP 주소를 반영 할 수 있습니다. 테스트 결과는 생성 된 기본 TestNG 보고서에서 확인할 수 있습니다.

개요

  • Selenium Grid는 여러 브라우저와 플랫폼에서 동시에 여러 테스트를 실행하는 데 사용됩니다.
  • Grid는 허브 노드 개념을 사용합니다.
  • 허브는 테스트를로드하는 중심점입니다.
  • 노드는 허브에로드 한 테스트를 실행할 셀레늄 인스턴스입니다.
  • Selenium Grid를 설치하려면 Selenium RC 테스트 실행에 사용 된 것과 동일한 파일 인 Selenium Server jar 파일 만 다운로드하면됩니다.
  • 허브가 실행 중인지 확인할 수있는 두 가지 방법이 있습니다. 하나는 명령 프롬프트에서, 다른 하나는 브라우저를 통한 것입니다
  • Grid에서 테스트 스크립트를 실행하려면 DesiredCapabilities 및 RemoteWebDriver 객체를 사용해야합니다.
  • DesiredCapabilites는 자동화 할 브라우저 및 운영 체제 유형을 설정하는 데 사용됩니다
  • RemoteWebDriver는 테스트를 실행할 노드 (또는 시스템)를 설정하는 데 사용됩니다.


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