Selenium 그리드 튜토리얼: 허브와 노드 설정하기
⚡ 스마트 요약
Selenium Grid는 허브-노드 아키텍처를 사용하여 여러 브라우저, 운영 체제 및 머신에서 병렬로 테스트를 실행합니다. 허브는 한 머신에서 부하 테스트를 수행하고 노드는 다른 머신에서 테스트를 실행하므로 명령줄 또는 JSON 구성을 통해 더 빠른 크로스 브라우저 테스트 범위를 확보할 수 있습니다.

Selenium 그리드?
Selenium 그리드 는 Selenium 여러 브라우저, 운영 체제, 머신에서 병렬로 여러 테스트를 실행하는 데 특화된 제품군입니다. 서버가 허브 역할을 하는 원격 브라우저 인스턴스의 명령을 라우팅하여 달성됩니다. 사용자는 테스트를 실행하기 위해 원격 서버를 구성해야 합니다.
Selenium 그리드에는 이전 그리드 2과 최신 그리드 1의 두 가지 버전이 있습니다. 그리드 2은 점차적으로 더 이상 사용되지 않으므로 그리드 2에만 중점을 둘 것입니다. Selenium 팀.
Selenium 그리드 Archi강의
Selenium 그리드에는 허브와 노드가 있습니다 Archi강의.

허브
- 허브는 테스트를 로드하는 중앙 지점입니다.
- 그리드에는 허브가 하나만 있어야 합니다.
- 허브는 단일 시스템(예: OS가 다음과 같은 컴퓨터)에서만 실행됩니다. Windows 7이며 브라우저는 IE입니다.
- 허브가 포함된 머신은 테스트가 실행되는 곳이지만 브라우저가 노드에서 자동화되는 것을 볼 수 있습니다.
노드
- 노드는 Selenium 허브에 로드한 테스트를 실행할 인스턴스입니다.
- 그리드에는 하나 이상의 노드가 있을 수 있습니다.
- 다양한 플랫폼과 브라우저를 사용하는 여러 시스템에서 노드를 시작할 수 있습니다.
- 노드를 실행하는 머신은 허브의 플랫폼과 동일한 플랫폼일 필요는 없습니다.
Selenium Grid는 단일 시스템에서만 테스트를 실행하는 허브 노드 개념을 사용합니다. 허브하지만 실행은 다음과 같은 다른 컴퓨터에서 수행됩니다. 노드.
설정 방법 Selenium 그리드?
이 섹션에서는 2대의 머신을 사용합니다. 첫 번째 머신은 허브를 실행하는 시스템이고 다른 머신은 노드를 실행합니다. 단순화를 위해 허브가 실행되는 머신을 "머신 A"라고 부르고 노드가 실행되는 머신을 "머신 B"라고 부르겠습니다. IP 주소를 기록해 두는 것도 중요합니다. 머신 A의 IP 주소가 192.168.1.3이고 머신 B의 IP 주소가 192.168.1.4라고 가정해 보겠습니다.
단계 1) 를 다운로드 Selenium 서버: 여기에서 확인하세요.
단계 2) 당신은 배치 할 수 있습니다 Selenium 하드 드라이브의 어느 위치에나 서버 .jar 파일이 있습니다. 하지만 이 튜토리얼의 목적을 위해 이를 머신 A와 머신 B의 C 드라이브에 배치합니다. 이렇게 하면 이제 설치가 완료됩니다. Selenium 그리드. 다음 단계는 허브와 노드를 시작합니다.
단계 3)
- 이제 허브를 출시할 예정입니다. 머신 A로 이동합니다. 명령 프롬프트를 사용하여 머신 A – C 드라이브의 루트로 이동합니다. Selenium 서버.
- 명령 프롬프트에서 다음을 입력합니다. 자바 -jar 셀레늄-서버-독립형-2.30.0.jar -역할 허브
- 허브가 성공적으로 시작되어야 합니다. 명령 프롬프트는 아래 이미지와 유사해야 합니다.
단계 4) 허브가 실행 중인지 확인하는 또 다른 방법은 브라우저를 사용하는 것입니다. Selenium Grid는 기본적으로 웹 인터페이스에 Machine A의 포트 4444를 사용합니다. 브라우저를 열고 다음으로 이동하세요. http://localhost:4444/grid/console
또한 머신 B에서 브라우저를 실행하고 "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을 사용했습니다.
- 참고: 이제 Gecko 드라이버를 사용하는 경우 경로를 제공해야 합니다. Firefox. 다음은 사용해야 하는 업데이트된 코드입니다.
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 그리드 웹 인터페이스 및 페이지 새로 고침. 이런 것을 봐야합니다.
이 시점에서는 이미 간단한 그리드를 구성했습니다. 이제 머신 B에서 원격으로 테스트를 실행할 준비가 되었습니다.
언제 사용 하는가? Selenium 그리드?
당신은 사용해야합니다. Selenium 다음 중 하나 또는 둘 다를 수행하려는 경우 그리드를 사용합니다.
- 다양한 브라우저, 운영 체제, 컴퓨터에서 동시에 테스트를 실행해 보세요. 이렇게 하면 귀하의 응용 프로그램이 확인됩니다. 지원 다양한 브라우저-OS 조합과 완벽하게 호환됩니다.
- 테스트 스위트 실행 시간을 절약하세요. 설정한 경우 Selenium 예를 들어 한 번에 4개의 테스트를 실행하는 그리드를 사용하면 전체 제품군을 약 4배 더 빠르게 완료할 수 있습니다.
그리드 1.0 대 그리드 2.0
다음은 주요 차이점입니다. Selenium 그리드 1과 2.
| 그리드 1 | 그리드 2 |
|---|---|
| Selenium 그리드 1에는 그리드 XNUMX과 다른 자체 리모컨이 있습니다. Selenium RC 서버. 그들은 두 가지 다른 프로그램입니다. | Selenium 그리드 2는 이제 다음과 함께 번들로 제공됩니다. Selenium 서버 jar 파일 |
| 설치하고 구성해야 합니다. 아파치 Grid 1을 사용하기 전에 먼저 Ant를 사용하세요. | Grid 2에는 Apache Ant를 설치할 필요가 없습니다. |
| 지원만 가능 Selenium RC 명령/스크립트. | 둘 다 지원할 수 있음 Selenium RC 및 WebDriver 스크립트. |
| 리모컨당 하나의 브라우저만 자동화할 수 있습니다. | 하나의 리모컨으로 최대 5개의 브라우저를 자동화할 수 있습니다. |
Selenium 그리드는 두 가지 방법으로 설정할 수 있습니다. 하나는 명령줄을 통해, 다른 하나는 JSON 구성 파일을 통해 수행됩니다.
그리드에서 실행할 수 있는 테스트 스크립트 디자인
그리드에서 실행될 테스트 스크립트를 디자인하려면 다음을 사용해야 합니다. 원하는 기능 그리고 원격웹드라이버 사물.
- 원하는 기능 유형을 설정하는 데 사용됩니다. 브라우저 OS 우리가 자동화할 것입니다.
- 원격웹드라이버 테스트를 실행할 노드(또는 머신)를 설정하는 데 사용됩니다.
을 사용하려면 원하는 기능 개체를 사용하려면 먼저 이 패키지를 가져와야 합니다.
을 사용하려면 원격웹드라이버 개체인 경우 이러한 패키지를 가져와야 합니다.
DesiredCapabilites 개체 사용
Grid의 웹 인터페이스로 이동하여 자동화하려는 브라우저 이미지 위로 마우스를 가져갑니다. 다음 사항을 참고하세요. 플랫폼 그리고 브라우저 이름 툴팁으로 표시됩니다.
이 경우 플랫폼은 “XP”이고 browserName은 “Firefox. "
아래와 같이 WebDriver에서 플랫폼과 browserName을 사용합니다(물론 필요한 패키지를 먼저 가져와야 합니다).
RemoteWebDriver 개체 사용
RemoteWebDriver에 필요한 패키지를 가져온 다음 위에서 생성한 DesiredCapability 개체를 RemoteWebDriver 개체의 매개 변수로 전달합니다.
그리드에서 샘플 테스트 케이스 실행
아래는 간단한 WebDriver입니다. 테스트 중 에서 만들 수 있는 코드 Eclipse Machine A에서 실행하면 Machine B에서 자동화가 수행됩니다.
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 Grid_2 { WebDriver driver; String baseUrl, nodeURL; @BeforeTest public void setUpWthrows MalformedURLException { baseUrl = "http://newtours.demoaut.com/"; nodeURL = "http://192.168.1.4:5566/wd/hub"; DesiredCapabilities capability = DesiredCapabilities.firefox(); capability. setBrowserName("firefox"); capability. setPlatform(Platform.XP); driver = new RemoteWebDriver(new URL(nodeURL), capability); } @AfterTest public void afterTest() { driver.quit(); } @Test public void simpleTest() { driver.get(baseUr1); Assert.assertEquas("Welcome: Mercury Tours", driver.getTitle()); } }
테스트는 통과해야 합니다.
![]() |
![]() |
Selenium JSON 파일을 사용한 그리드 구성
JSON은 다음을 의미합니다. Javascript 객체 표기법. 브라우저와 웹 서버 간의 데이터 교환에 사용되는 표준 형식입니다. Selenium Selenium Grid를 설정하는 데 사용할 수 있는 내장 JSON 구성 파일이 있습니다.
JSON 구성 파일을 사용하여 Selenium Grid를 구성하는 단계는 다음과 같습니다.
단계 1) 아래 경로를 사용하여 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
알림: Selenium 독립형 jar 파일과 json 파일이 동일한 디렉터리에 있어야 합니다.
단계 4) 허브가 성공적으로 설정되었음을 나타내는 아래 화면이 나타납니다.
단계 5) 웹 브라우저를 열고 아래 주소에 접속해 보세요. URL
http://192.168.43.223:4444/grid/console
알림: The URL 기기마다 다를 수 있습니다. URL 위 화면에 표시되는 '노드는 다음으로 등록해야 합니다'를 사용해야 합니다.
단계 6) 허브가 작동 중임을 나타내는 그리드 콘솔 화면이 나타납니다.
JSON을 사용하여 노드 구성
단계 1) 에서 제공하는 샘플 노드 구성 파일을 다운로드하세요. Selenium 아래를 사용하여 URL
알림: SELENIUM 3.0 이상을 사용하는 경우 아래 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) 엔터키를 누르면 아래 화면이 나옵니다
단계 5) 노드가 성공적으로 구성되었는지 확인하려면 그리드 콘솔로 이동하세요.
브라우저는 그리드 콘솔에 표시됩니다. 따라서 노드가 성공적으로 구성되었는지 확인할 수 있습니다.
샘플 테스트 케이스 켜기 Selenium 그리드:
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 = "https://demo.guru99.com/test/guru99home/"; nodeURL = "http://192.168.43.223:5566/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); if (driver.getPageSource().contains("MOBILE TESTING")) { Assert.assertTrue(true, "Mobile Testing Link Found"); } else { Assert.assertTrue(false, "Failed: Link not found"); } } }
위 코드는 크롬 브라우저를 실행하고 해당 페이지로 이동합니다. URL '기본'에 지정된URL'변수'입니다. 페이지에 '모바일 테스트'라는 링크 이름이 표시되는지 확인했습니다.
URL '노드'에서URL'변수는 원격 시스템의 IP 주소를 반영하도록 수정할 수 있습니다. 테스트 결과는 기본값에서 확인할 수 있습니다. TestNG 보고서가 생성됨







.png)






