selenium grid tutorial
Selenium Grid 소개 및 Selenium Grid를 사용하여 브라우저 간 테스트를 수행하는 방법 :
이제 우리는 이것의 끝에 가까워졌습니다 포괄적 인 Selenium 튜토리얼 시리즈 . 다음 주에는 'Selenium 프로젝트의 노력 평가'및 'Selenium 인터뷰 질문 및 답변'자습서로이 온라인 Selenium 교육 시리즈를 마칩니다.
오늘,이 튜토리얼에서는 셀레늄 그리드 – a 분산 테스트 실행 테스트 통과의 실행 속도를 높이기위한 환경입니다. Selenium Grid를 사용하여 크로스 브라우저 테스트를 수행하는 방법을 알아 봅니다.
학습 내용 :
- 셀레늄 그리드의 필요성은 무엇입니까?
- 셀레늄 그리드의 장점
- Selenium GRID 설치
- 브라우저 및 노드
- maxInstances
- maxSession
- 샘플 그리드 코드
- JSON 파일을 사용한 구성
- 결론
- 추천 도서
셀레늄 그리드의 필요성은 무엇입니까?
전체를 통해 Selenium WebDriver 튜토리얼 WebDriver가 단일 시스템에서 테스트 케이스를 실행한다는 것을 알게 될 것입니다.
다음은 이러한 설정에 대한 몇 가지 문제입니다.
- 다른 운영 체제에 대한 테스트 케이스를 실행하려면 어떻게해야합니까?
- 동일한 브라우저의 다른 버전에서 테스트 케이스를 실행하는 방법은 무엇입니까?
- 여러 브라우저에서 테스트 케이스를 실행하는 방법은 무엇입니까?
- 시나리오가 테스트 케이스에 의존하지 않더라도 다른 테스트 케이스의 실행을 기다려야하는 이유는 무엇입니까?
이러한 모든 문제는 Selenium GRID에서 해결됩니다.
Selenium 과정을 진행하면서 이러한 문제를 극복 할 수있는 방법에 대한 아이디어를 얻게됩니다. 기본적으로 그리드 아키텍처는 마스터-슬레이브 아키텍처를 기반으로합니다. 마스터 머신은 테스트 케이스를 다른 슬레이브 머신에 배포합니다.
Grid에는 2 가지 버전이 있습니다. Selenium Grid 2.0은 Selenium의 최신 버전입니다. Selenium 1.0은 이전 버전이었습니다. 대부분의 Selenium 전문가는 새로운 기능으로 가득 찬 Selenium Grid 2.0 사용을 선호합니다. Selenium Grid 2.0은 Selenium RC 및 Selenium WebDriver 스크립트를 모두 지원합니다.
권장 도구 :
# 1) LambdaTest
확장 가능하고 안전하며 안정적인 클라우드 기반 Selenium Grid에서 온라인으로 Selenium 자동화 테스트를 수행하십시오. Selenium 테스트 자동화를 가속화하는 동시에 2000 개 이상의 데스크탑 및 모바일 브라우저 환경의 온라인 인프라에서 테스트하여 테스트 범위를 늘리십시오.
추천 읽기 = >> LambdaTest로 브라우저 테스트 자동화
셀레늄 그리드의 장점
- Selenium Grid는 실행을 위해 테스트 케이스를 배포 할 수있는 유연성을 제공합니다.
- 일괄 처리 시간을 줄입니다.
- 다중 브라우저 테스트를 수행 할 수 있습니다.
- 다중 OS 테스트를 수행 할 수 있습니다.
셀레늄 그리드의 기본 용어 :
바퀴통 : 허브는 모든 요청을 수신하는 전체 GRID 아키텍처의 중심 지점입니다. 셀레늄 그리드에는 허브가 하나뿐입니다. Hub는 각 노드에 테스트 케이스를 배포합니다.
마디 : Grid에는 여러 노드가있을 수 있습니다. 테스트는 노드에서 실행됩니다. 각 노드는 허브와 통신하고 할당 된 테스트를 수행합니다.
Selenium GRID 설치
1 단계 : 이전에 Selenium RC Server로 알려진 Selenium의 공식 웹 사이트에서 Selenium Server jar 파일을 다운로드하여 로컬 디스크의 임의 위치에 저장하십시오.
셀레늄 본사 URL : http://www.seleniumhq.org/download/
2 단계 : 명령 프롬프트를 열고 서버가있는 폴더로 이동합니다. 아래 명령을 사용하여 서버를 실행하십시오.
java -jar selenium-server-standalone-2.41.0.jar -role 허브
허브는 기본적으로 포트 4444를 사용합니다. 포트가 열려 있고 작업이 할당되지 않은 경우 명령 프롬프트에서 다른 포트 번호를 전달하여이 포트를 변경할 수 있습니다.
웹 인터페이스를 사용하여 상태를 확인할 수 있습니다. http : // localhost : 4444 / grid / console
3 단계 : 노드를 설정하려는 다른 컴퓨터로 이동합니다. 명령 프롬프트를 열고 아래 줄을 실행하십시오.
java -jar selenium-server-standalone-2.41.0.jar -role node -hub http://localhost:4444/grid/register -port 5556
노드를 시작하려면 다른 컴퓨터에서 셀레늄 서버를 실행하십시오.
브라우저 및 노드
GRID 콘솔로 이동할 때 각 시스템에서 허브 및 노드를 시작한 후
아래와 같이 브라우저 섹션 아래에 5 개의 Chrome, 5 개의 Firefox 및 1 개의 IE 브라우저가 있습니다.
이는 기본적으로 Chrome 5 개, Firefox 5 개 및 IE 브라우저 1 개를 사용할 수 있음을 나타냅니다.
예를 들어 IE 만 사용하려면 아래 명령을 사용하여 노드를 시작할 수 있습니다.
java -jar selenium-server-standalone-2.41.0.jar -role webdriver -hub http://localhost:4444/grid/register -port 5556 -browser browserName=iexplore
GRID 콘솔에서 브라우저 유형과 기타 세부 정보를 확인하려면 구성보기 .
Firefox의 경우 :
java -jar selenium-server-standalone-2.41.0.jar -role webdriver -hub http://localhost:4444/grid/register -port 5556 -browser browserName=firefox
Chrome의 경우 :
java -jar selenium-server-standalone-2.41.0.jar -role webdriver -hub http://localhost:4444/grid/register -port 5556 -browser browserName=chrome
각 유형 (예 : IE, Chrome 및 Firefox)에서 브라우저가 필요할 수있는 시나리오는 거의 없습니다.
예를 들어 IE 1 개, Firefox 1 개, Chrome 브라우저 1 개를 사용해야 할 수 있습니다.
java -jar selenium-server-standalone-2.41.0.jar -role webdriver -hub http://localhost:4444/grid/register -port 5556 -browser browserName=iexplore -browser browserName=firefox -browser browserName=chrome
maxInstances
maxInstance는 노드에서 브라우저 초기화 수를 제한하는 데 사용됩니다.
예를 들어, Firefox 2 개와 IE 2 개로 작업하려면 maxInstance를 사용하여 노드를 시작할 수 있습니다.
java -jar selenium-server-standalone-2.41.0.jar -role webdriver -hub http://localhost:4444/grid/register -port 5556 -browser browserName=firefox,maxInstance=3
최대 인스턴스는 구성 탭에서 확인할 수 있습니다.
마찬가지로 maxInstances를 사용하여 다른 브라우저 인스턴스를 구성 할 수 있습니다.
maxSession
maxSession은 원격 시스템에서 병렬로 사용할 수있는 브라우저 수를 구성하는 데 사용됩니다.
java -jar selenium-server-standalone-2.41.0.jar -role webdriver -hub http://localhost:4444/grid/register -port 5556 -browser browserName=chrome,maxInstance=3 -browser browserName=firefox,maxInstance=3 –maxSession 3
마찬가지로 여러 노드를 시작할 수 있으며 콘솔에서 구성을 확인할 수 있습니다.
NODE1 :
NODE2 :
샘플 그리드 코드
여기에서는 TestNG를 사용하여 샘플 GRID 테스트 케이스를 실행했습니다.
전제 조건 : 앞에서 설명한대로 허브와 노드를 생성하고 TestNG는 Eclipse에서 구성해야합니다.
여기에 Gmail에 로그인하고 사용자 이름과 비밀번호를 입력하는 샘플 테스트를 받았습니다.
public class GridExample { @Test public void mailTest() throws MalformedURLException{ DesiredCapabilities dr=null; if(browserType.equals('firefox')){ dr=DesiredCapabilities.firefox(); dr.setBrowserName('firefox'); dr.setPlatform(Platform.WINDOWS); }else{ dr=DesiredCapabilities.internetExplorer(); dr.setBrowserName('iexplore'); dr.setPlatform(Platform.WINDOWS); } RemoteWebDriver driver=new RemoteWebDriver(new URL('http://localhost:4444/wd/hub'), dr); driver.navigate().to('http://gmail.com'); driver.findElement(By.xpath('//input(@id='Email')')) .sendKeys('username'); driver.findElement(By.xpath('//input(@id='Passwd')')) .sendKeys('password'); driver.close(); }
예에서와 같이 GRID를 사용하고 브라우저에 기능을 제공해야하는 경우 RemoteWebDriver를 사용해야합니다. 위와 같이 브라우저와 플랫폼을 설정해야합니다.
다른 전화를 감시하는 앱
이 예에서는 플랫폼을 WINDOWS로 사용했습니다. 요구 사항에 따라 모든 플랫폼을 사용할 수 있습니다.
dr.setVersion ( 'version')을 사용하여 브라우저 버전을 설정할 수도 있습니다.
예를 들어, 여러 브라우저에서이 테스트를 직렬로 실행해야하며 testng.xml을 구성해야합니다. 아래는 테스트를 직렬로 실행하기위한 위의 테스트를위한 testng.XML 제품군입니다.
테스트를 병렬로 실행하려면 아래와 같이 testng.xml을 변경해야합니다.
여기 testng.XML에서 매개 변수를 다음과 같이 지정해야합니다. Parllel = '테스트' 과 스레드 수 = '삼' 병렬로 실행할 최대 스레드 수를 설명합니다.
JSON 파일을 사용한 구성
그리드는 JSON 구성 파일을 사용하여 구성과 함께 시작할 수도 있습니다.
아래 구성을 위해 JSON 파일을 만듭니다. 여기에서 grid_hub.json이라는 이름의 JSON 파일을 만들었습니다.
{ 'host': null, 'port': 4444, 'newSessionWaitTimeout': -1, 'servlets' : (), 'prioritizer': null, 'capabilityMatcher': 'org.openqa.grid.internal.utils.DefaultCapabilityMatcher', 'throwOnCapabilityNotPresent': true, 'nodePolling': 5000, 'cleanUpCycle': 5000, 'timeout': 300000, 'maxSession': 5 }
아래 명령을 사용하여 허브를 시작하십시오.
java -jar selenium-server-standalone-2.41.0.jar -role hub –hubConfig grid_hub.json
마찬가지로 필요한 구성에 따라 다른 노드에 대해 다른 json 파일을 만듭니다.
다음은 grid_node.json이라는 노드에 대한 JSON 구성 파일의 예입니다.
{ 'capabilities': ( { 'browserName': 'chrome', 'maxInstances': 2 }, { 'browserName': 'firefox', 'maxInstances': 2 }, { 'browserName': 'internet explorer', 'maxInstances': 1 } ), 'configuration': { 'nodeTimeout':120, 'port':5555, 'hubPort':4444, 'hubHost':'localhost', 'nodePolling':2000, 'registerCycle':10000, 'register':true, 'cleanUpCycle':2000, 'timeout':30000, 'maxSession':5, } }
노드를 시작하려면
java -jar selenium-server-standalone-2.41.0.jar -role rc –nodeConfig grid_node.json
JSON 파일에서 브라우저, maxInstances, 포트, maxSession 등의 모든 구성을 변경할 수 있습니다.
아래와 같이 JSON 구성 파일에 브라우저 버전, 플랫폼을 제공 할 수 있습니다.
{
“browserName”:“chrome”,”version”:”8”,”platform”:”Windows”
}
결론
다음과 같이하는 것이 좋습니다. 다중 브라우저 테스트를 수행해야하고 테스트 사례가 많은 경우 Selenium Grid를 사용하십시오.
이 모듈에서는 testng.XML 및 JSON 파일을 사용하여 그리드 테스트 케이스를 실행하는 방법과 함께 그리드 허브 및 노드를 설정하는 방법을 다뤘습니다.
다음 튜토리얼 # 30 : Selenium 및 Cucumber 도구를 사용한 자동화 테스트 . 오이 BDD 테스트입니다 수단 및 프레임 워크. 우리는 Cucumber 도구의 기능과 다음을 포함한 실시간 시나리오에서의 사용법을 배웁니다. Selenium WebDriver를 Cucumber와 통합하는 방법 .
아래 댓글에 Selenium Grid와 관련된 질문을 게시하십시오.
추천 도서
- Docker Selenium 자습서 : Selenium Grid를 Docker와 통합하는 방법
- Cucumber Tool과 Selenium을 사용한 자동화 테스트 – Selenium Tutorial # 30
- Cucumber Selenium 튜토리얼 : Cucumber Java Selenium WebDriver 통합
- Selenium과의 통합 및 기능 테스트를위한 Spock
- 초보자를위한 심층 이클립스 튜토리얼
- Selenium WebDriver 소개 – Selenium Tutorial # 8
- Geb 자습서-Geb 도구를 사용한 브라우저 자동화 테스트
- Parrot QA 튜토리얼 : 크로스 브라우저 기능 테스트 도구 검토