반응형
들어가며
설명
- 로컬 PC에서 Selenium IDE(Chrome)를 활용해 테스트 시나리오를 레코딩한 후 JUnit으로 코드로 변환
- Jenkins 서버에서 위 과정에서 변환된 JUnit 코드를 실행
- 로컬 PC에 Selenium IDE 설치 필요
Selenium JUnit 프로젝트 설정
프로젝트 생성 및 WebDriver 추가
- 다운로드
- Linux용 드라이버 저장 경로 : <프로젝트>/webdriver/chrome/chromedriver
- Windows용 드라이버 저장 경로 : <프로젝트>/webdriver/chrome/chromedriver.exe
- git에서 드라이버 파일을 실행 가능 파일로 관리할 수 있도록 아래 명령어 수행 후 commit & push
git update-index --chmod=+x webdriver/chrome/chromedriver git update-index --chmod=+x webdriver/chrome/chromedriver.exe
Dependency 추가
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>3.14.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.14.0</version>
</dependency>
JUnit TC 추가
테스트 시나리오
- 유튜브 메인에서 "펭수" 검색
- 목록에 노출된 "자이언트 펭TV" 채널로 접속하기 위해 섬네일 이미지 클릭
- 해당 채널의 제목이 "자이언트 펭TV"가 맞는지 확인
Selenium IDE로 테스트 시나리오 레코딩하기 (필요한 경우에만 참고)
- IDE 실행
- IDE > Create a new project 선택 > 아무 이름 입력 후 OK
- IDE > 상단에 Playback base URL에 URL 입력 : https://www.youtube.com/
- IDE > 우상단에 REC 버튼 클릭하면 브라우저 open
- BROWSER > 검색창에 "펭수" 입력 후 검색
- BROWSER > 채널 섬네일 이미지 클릭
- IDE > 하단에서 Command 추가
- Command : assert text
- Target : Select target in page 버튼 클릭 후 브라우저의 채널 제목 영역 클릭해서 지정
- Value : 자이언트 펭TV
- IDE > 상단에 빨간 버튼 눌러 레코딩 종료
- IDE > 불필요한 코드 Command 제거 및 정리
- IDE > 상단 Run current test 버튼 클릭해 테스트 성공하는지 확인
- IDE > 좌측 테스트 목록에서 우클릭 > Export > Java JUnit 선택 후 EXPORT해서 TC 코드로 저장
테스트 코드
public class YoutubeChannelTest {
private static final int TIMEOUT = 10;
static {
if (SystemUtils.IS_OS_WINDOWS) {
System.setProperty("webdriver.chrome.driver", "webdriver/chrome/chromedriver.exe");
}
if (SystemUtils.IS_OS_LINUX) {
System.setProperty("webdriver.chrome.driver", "webdriver/chrome/chromedriver");
}
}
private WebDriver driver;
@BeforeEach
public void setUp() {
ChromeOptions options = new ChromeOptions();
options.addArguments("headless"); // 브라우저를 띄우지 않고 테스트
options.addArguments("--mute-audio"); // 소리 끄기
driver = new ChromeDriver(options);
}
@AfterEach
public void tearDown() {
driver.quit();
}
@Test
public void 펭수TV_유튜브_채널명_확인() {
driver.get("https://www.youtube.com/");
new WebDriverWait(driver, TIMEOUT).until(ExpectedConditions.elementToBeClickable(By.name("search_query"))).click();
new WebDriverWait(driver, TIMEOUT).until(ExpectedConditions.elementToBeClickable(By.id("container"))).click();
new WebDriverWait(driver, TIMEOUT).until(ExpectedConditions.elementToBeClickable(By.name("search_query"))).click();
new WebDriverWait(driver, TIMEOUT).until(ExpectedConditions.presenceOfElementLocated(By.name("search_query"))).sendKeys("펭수");
new WebDriverWait(driver, TIMEOUT).until(ExpectedConditions.presenceOfElementLocated(By.name("search_query"))).sendKeys(Keys.ENTER);
new WebDriverWait(driver, TIMEOUT).until(ExpectedConditions.elementToBeClickable(By.cssSelector(".ytd-channel-renderer > #img"))).click();
Assertions.assertEquals("자이언트 펭TV", new WebDriverWait(driver, TIMEOUT).until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("#channel-container yt-formatted-string.ytd-channel-name"))).getText());
}
}
Jenkins 설정
Jenkins Job 생성
- Name
- spring-selenium
- Git 연동, Maven 설정 필요하면 아래 참고
Jenkins Job 설정
- spring-selenium > 구성
- Build > Invoke top-level Maven targets
- Maven Version
- maven-3.6.3
- Goals
clean compile test
- Maven Version
- 빌드 후 조치 > Publish JUnit test result report
- Test report XMLs
- target/surefire-reports/TEST-*.xml
- Test report XMLs
- 저장
libnss3 모듈 모듈 설치
- 명령어
sudo apt-get install libnss3
- libnss3은 chromedriver 실행시 필요한 모듈. 모듈 없을 경우 TC 실행시 아래 문구의 오류 발생.
error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory
Jenkins 서버에 chrome 설치
- 명령어
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - \ && sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \ && sudo apt-get update \ && sudo apt-get install google-chrome-stable
- chrome 미설치 후 TC 실행시 아래 문구의 오류 발생
org.openqa.selenium.WebDriverException: unknown error: cannot find Chrome binary
- 참고
Jenkins 빌드 실행
- TC 성공하는지 확인
반응형
'Development > Jenkins' 카테고리의 다른 글
[Jenkins] Jenkins Pipeline (0) | 2020.12.28 |
---|---|
[Jenkins] Jenkinsfile (0) | 2020.12.28 |
[Jenkins] Publish Over SSH 설정 (0) | 2019.05.01 |
[Jenkins] npm 빌드 설정 (0) | 2019.04.30 |
[Jenkins] git 프로젝트 빌드 설정 (0) | 2019.04.30 |