자동화테스트/Selenium2020. 2. 14. 08:00

[selenium] 셀레니움 IDE 커맨드라인러너(Command-line Runner)

 

코드를 작성하지 않고도 모든 Selenium IDE 테스트를 모든 브라우저에서 병렬로 그리드에서 실행할 수 있습니다.

 

Selenium IDE 명령 줄 러너를 설치하고 필요한 브라우저 드라이버를 가져오고 (테스트를 로컬로 실행하는 경우) 원하는 옵션을 사용하여 명령 프롬프트에서 러너를 시작하면 됩니다.

 

 

 

전제 조건

명령 행 실행기가 작동하려면 다음 종속성이 필요합니다.

 

node(Node.js 프로그래밍 언어) 버전 8또는10

npm 일반적으로 다음과 같이 설치되는 (NodeJS 패키지 관리자) node

selenium-side-runner (Selenium IDE 명령 행 러너)

사용하려는 브라우저 드라이버

> brew install node

> npm install -g selenium-side-runner

참고: 시스템 구성은 위 샘플에서 사용한 것과 다를 수 있습니다 (: MacOS Homebrew). 그렇다면, 패키지 관리자 용 노드 설치 문서를 참조(https://nodejs.org/en/download/package-manager) 하거나

 

Installing Node.js via package manager | Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

노드 다운로드 페이지(https://nodejs.org/en/download/) 에서

 

Download | Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

직접 운영 체제 용 노드 설치 프로그램을 다운로드 하십시오.

 

브라우저 드라이버 설치

테스트를 로컬로 실행 하려면 각 브라우저 마다 몇 가지 추가 설정이 필요합니다.

 

Selenium은 브라우저 드라이버라고 하는 작은 이진 응용 프로그램을 통해 각 브라우저와 통신합니다. 각 브라우저에는 시스템 경로에 수동으로 다운로드 하여 추가하거나 패키지 관리자를 사용하여 최신 버전의 브라우저 드라이버를 설치 (권장) 할 수 있는 자체 브라우저가 있습니다.

 

컴퓨터에 브라우저가 설치되어 있어야 합니다.

 

크롬

Chrome의 경우 ChromeDriver 가 필요 합니다.

> npm install -g chromedriver

 

 

마이크로소프트 엣지

Microsoft Edge의 경우 Windows에서 실행 중이 어야하며 EdgeDriver 도 필요 합니다.

> npm install -g edgedriver

 

Firefox

Firefox의 경우 geckodriver 가 필요 합니다.

> npm install -g geckodriver

 

인터넷 익스플로러

Internet Explorer의 경우 Windows에서 실행해야 하며 IEDriver 도 필요 합니다.

> npm install -g iedriver

 

IEDriver가 작동하려면 몇 가지 추가 설정이 필요합니다. 자세한 내용은 여기를 참조하십시오.

https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver#required-configuration

 

SeleniumHQ/selenium

A browser automation framework and ecosystem. Contribute to SeleniumHQ/selenium development by creating an account on GitHub.

github.com

 

사파리

Safari의 경우 SafariDriver 가 필요 합니다.

 

최신 버전의 Safari와 함께 제공됩니다. 컴퓨터에서 활성화하기 위해 수행해야 할 몇 가지 단계가 있습니다

 

Runner 시작

모든 것이 설치되면 테스트 실행 selenium-side-runner은 명령 줄에서 호출 한 다음 이전에 저장된 프로젝트 파일의 경로를 호출 하면 됩니다

> selenium-side-runner /path/to/your-project. Side

 

참고: .side파일 이 여러 개인 경우 와일드 카드 ( : /path/to/*.side)를 사용할 수 있습니다.

 

이 명령을 실행하면 테스트가 병렬로 여러 브라우저 창에서 n 프로세스에 분산됩니다 (여기서 n은 컴퓨터에서 사용 가능한 CPU 코어 수임).

 

제공 할 수 있는 다양한 인수를 통해 런타임에 프로세스 수를 구성(다른 것 중에서도) 할 수 있습니다.

 

참고 : 병렬 실행은  Suite 수준에서 자동으로 수행됩니다. Suite 내 테스트를 병렬로 실행하려면 설정을 변경해야 합니다

 

런타임 구성

러너를 사용하면 런타임에 다른 구성 인수를 전달할 수 있습니다.

 

다른 브라우저에서 로컬로 실행

가장 일반적인 기능 사용은 로컬 테스트 실행을 위해 다른 브라우저를 지정하는 것입니다.

selenium-side-runner -c "browserName=chrome"
selenium-side-runner -c "browserName='internet explorer'"
selenium-side-runner -c "browserName=edge"
selenium-side-runner -c "browserName=firefox"
selenium-side-runner -c "browserName=safari"

 

참고 : 테스트를 로컬로 실행할 때는 각 브라우저마다 약간의 설정이 필요합니다

 

셀레늄 그리드에서 실행

그리드 ( : 자체 그리드 또는 Sauce Labs와 같은 호스팅 된 공급자)에서 테스트를 실행하려면 다른 기능과 함께 테스트를 지정할 수 있습니다.

selenium-side-runner --server http://localhost:4444/wd/hub -c "browserName='internet explorer' version='11.0' platform='Windows 8.1'"

 

--serverGrid URL을 지정하고 -cGrid에서 사용하려는 기능입니다.

 

사용 가능한 기능의 전체 목록은 여기

https://github.com/SeleniumHQ/selenium/wiki/DesiredCapabilities 에서 확인할 수 있습니다.

 

SeleniumHQ/selenium

A browser automation framework and ecosystem. Contribute to SeleniumHQ/selenium development by creating an account on GitHub.

github.com

 

병렬 프로세스 수를 지정하십시오.

그리드에서 실행할 때 실행중인 병렬 세션 수를 제어 할 수 있습니다. 이를 위해 -w n명령 플래그를 사용할 수 있습니다 (여기서 n원하는 프로세스 수).

selenium-side-runner -w 10 --server http://localhost:4444/wd/hub

 

러너는 자동으로 작업자 수를 컴퓨터에서 사용할 수 있는 동일한 CPU 코어 수로 설정합니다. 대부분의 경우 이것이 최선의 선택입니다.

 

크롬 전용 기능

컴퓨터의 비표준 위치에 Chrome을 설치 한 경우 ChromeDriver가 볼 위치를 알 수 있도록 경로를 지정할 수 있습니다.

selenium-side-runner -c "goog:chromeOptions.binary='/path/to/non-standard/Chrome/install'"

 

Chrome 전용 기능을 사용하면 테스트를 헤드리스로 실행할 수도 있습니다.

selenium-side-runner -c "goog:chromeOptions.args=[disable-infobars, headless]"

 

프레임 워크에서 간단히 할수 있는것들

러너와 함께 상자에서 나오는 다른 멋진 것들도 있습니다. 전통적인 테스트 자동화 프레임 워크에서 사용할 수 있는 것들.

 

기본 URL 변경

다른 기본 URL을 지정할 수 있으므로 로컬 환경, 테스트, 스테이징, 프로덕션 등 다양한 환경에서 테스트를 쉽게 지시 할 수 있습니다.

 

 

selenium-side-runner --base-url https://localhost

 

필터 테스트

또한 --filter target명령 플래그 ( target정규 표현식 값)를 사용 하여 대상 테스트 하위 세트를 실행할 수 있습니다 .

 

주어진 검색 기준을 포함하는 테스트 이름 만 실행됩니다.

 

selenium-side-runner --filter smoke

 

테스트 결과를 파일로 출력

테스트 결과를 파일로 내 보내야 하는 경우 (: CI 프로세스의 일부로 실행할 때와 같이) --output-directory --output-format플래그를 함께 사용할 수 있습니다.

 

--output-directory테스트 결과 파일을 넣을 위치를 정의합니다. 절대 또는 상대 경로를 사용할 수 있습니다.

 

--output-format테스트 결과 파일에 사용할 형식을 정의합니다. 그것은 이 될 수 있습니다 jest(예를 들어, JSON) 또는 junit(예를 들어, XML). 기본 형식은 jest(: 유형을 지정하지 않은 경우)입니다.

selenium-side-runner --output-directory=results
# Outputs results in `jest` frormat in `./results/projectName.json'
selenium-side-runner --output-directory=results --output-format=jest
# Outputs results in `jest` frormat in `./results/projectName.json'
selenium-side-runner --output-directory=results --output-format=junit
# Outputs results in `junit` frormat in `./results/projectName.xml'

 

기본 구성 지정

다루기 힘든 모든 명령 줄 인수를 기억하는 대신 런타임 매개 변수를 구성 파일에 저장할 수 있습니다.

 

사용할 수 있는 구성 파일에는 두 가지 종류가 있습니다.

 

옵션 1

.side.yml테스트를 실행할 디렉토리에 파일을 작성하십시오 . 러너가 자동으로 픽업합니다. 다음은 파일 내용의 예입니다.

capabilities:
	browserName: "firefox"
baseUrl: "https://www.seleniumhq.org"
server: "http://localhost:4444/wd/hub"

파일을 무시하고 대신 명령 행 인수를 사용하려면 --no-sideyml런타임시 다른 명령과 함께 사용 하십시오.

 

옵션 2

.side.yml파일 을 사용하는 대신 , 선택한 이름과 위치를 사용하여 YAML 파일에 런타임 매개 변수를 지정한 다음 테스트를 실행할 때 해당 위치를 지정할 수 있습니다.

selenium-side-runner --config-file "/path/to/your/config.yaml"

참고 : --config-file플래그를 사용 .side.yml하면가 무시됩니다.

 

셀레늄 IDE 구성

스위트에서 테스트 병렬화

기본적으로 러너는 스위트를 병렬로 실행하지만 스위트 내의 테스트는 순차적으로 실행됩니다.

 

특정 스위트에서 테스트를 병렬로 실행하려면 Selenium IDE에서 해당 제품군의 설정을 업데이트해야 합니다.

 

  1. Selenium IDE 에서 Test Suites 보기로 전환
  2. 구성하려는 제품군 이름 옆의 드롭 다운 메뉴를 클릭하고 Settings 확인란을 클릭하십시오
  3. Run in parallel 체크박스 클릭
  4. Submit 클릭
  5. Selenium IDE 프로젝트 파일을 저장하십시오.

 

이 방법으로 실행되도록 둘 이상의 스위트를 구성하려면 각 제품군에서 1-4 단계를 반복하십시오.

 

완료되면 프로젝트 파일을 저장하십시오.

 

고급 옵션

추가 매개 변수

Selenium IDE 용 플러그인은 고유 한 런타임 매개 변수를 지정할 수 있습니다.

--params 플래그를 통해 사용할 수 있습니다.

 

이 옵션은 기능을 지정하는 방법과 유사한 다양한 옵션 문자열을 사용합니다.

 

기본 사용법

매개 변수 이름과 값을 지정하십시오. 이를 수행하는 가장 기본적인 방법은 문자열 값을 지정하는 것입니다.

selenium-side-runner --params "a='example-value'"

 

중첩 매개 변수

점 표기법을 사용하여 매개 변수를 중첩 할 수도 있습니다.

selenium-side-runner --params "a.b='another example-value'"

 

배열 값

문자열 대신 영숫자 값의 배열을 지정할 수 있습니다.

selenium-side-runner --params "a.b.c=[1,2,3]"

 

여러 매개 변수

--params 한 번만 호출 할 수 있지만 공간 분리를 통해 여러 매개 변수를 지정할 수 있습니다.

selenium-side-runner --params "a='example-value' a.b='another example-value' a.b.c=[1,2,3]"

 

프록시 서버 사용

러너에서 다음 옵션을 사용하여 프록시 기능을 브라우저에 전달할 수 있습니다.

 

직접 프록시

이 옵션은 모든 브라우저 프록시를 무시하도록 WebDriver를 구성합니다.

 

명령 행에서:

> selenium-side-runner --proxy-type=direct

 

.side.yaml: 에서

proxyType: direct

 

수동 프록시

브라우저 프록시를 수동으로 구성하십시오.

 

명령 행에서 :

selenium-side-runner --proxy-type=manual --proxy-options="http=localhost:434 bypass=[http://localhost:434, http://localhost:8080]"

 

 

.side.yaml: 에서

proxyType: manual
proxyOptions:
	http: http://localhost:434
    https: http://localhost:434
    ftp: http://localhost:434
    bypass: 
    	- http://localhost:8080
        - http://host:434
        - http://somethingelse:32

PAC 프록시

지정된 URL에서 PAC 파일을 사용하여 브라우저 프록시를 설정하도록 WebDriver를 구성하십시오.

 

명령 행에서 :

selenium-side-runner --proxy-type=pac --proxy-options="http://localhost/pac"

 

.side.yaml:에서

proxyType: pac
proxyOptions: http://localhost/pac

 

SOCKS 프록시

SOCKS 프록시에 대한 프록시 구성을 작성하십시오.

 

명령 행에서 :

selenium-side-runner --proxy-type=socks --proxy-options="socksProxy=localhost:434 socksVersion=5"

 

.side.yaml:에서

proxyType: socks
proxyOptions:
  socksProxy: localhost:434
  socksVersion: 5

 

시스템 프록시

현재 시스템의 프록시를 사용하도록 WebDriver를 구성하십시오.

 

명령 행에서 :

selenium-side-runner --proxy-type=system

.side.yaml: 에서

proxyType: system

코드 내보내기

기록 된 테스트를 WebDriver 코드로 변환하는 방법을 배우려고 하거나 기록 된 테스트를 기존의 사용자 정의 테스트 프레임 워크에 통합하려는 경우 이제 선택한 언어에 사용할 수 있는 코드 내보내기가 필요합니다

 

 

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