Selenium WebDriver 길들이기 [구글과 페이스북으로 만드는 테스트 스크립트]
- 원서명Selenium WebDriver Practical Guide (ISBN 9781782168850)
- 지은이사티야 아바사알라(Satya Avasarala)
- 옮긴이김유성, 최근호
- ISBN : 9788960778191
- 25,000원
- 2016년 01월 29일 펴냄 (절판)
- 페이퍼백 | 292쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 소프트웨어 테스팅
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
요약
구글 검색 페이지를 대상으로 테스트 스크립트를 작성하는 실용적인 예제로 셀레늄 웹드라이버(Selenium WebDriver) API 사용법을 배워나간다. 기본 사용법을 익히고, 조금 더 복잡한 사용자 액션으로 확장해 나간다. 웹드라이버를 바꿔가며 하나의 스크립트로 다양한 브라우저에서 테스트를 수행하는 방법과 리모트 웹드라이버(RemoteWebDriver)로 다양한 OS에서 테스트를 실행하는 방법, Appium을 사용한 모바일 테스트 방법 등을 알아본다.
이 책에서 다루는 내용
셀레늄 웹드라이버의 기본 구조와 셀레늄 1의 한계 극복 과정
셀레늄 그리드 설정과 사용법
웹 엘리먼트를 찾는 다양한 메커니즘
드래그앤드롭, 더블클릭, 마우스 우클릭과 같은 고급 액션 실행과 단일 액션 여러 개를 하나로 만드는 액션 빌더
쿠키 핸들링, 스크린샷 캡처, 브라우저 이동 등 웹드라이버에서 제공하는 고급 기능
Firefox Driver, IE Driver, Chrome Driver 같은 다양한 웹드라이버 구현체 이해
웹드라이버 이벤트 리스너
페이지 오브젝트 패턴을 사용한 효과적인 자동화 프레임워크 구축
웹드라이버의 최신 기능 활용법
이 책의 대상 독자
이 책은 웹 애플리케이션 테스트 자동화를 꿈꾸는 품질 관리자나 테스트 전문가, 웹 애플리케이션 개발자에게 훌륭한 가이드다. 기본적으로 자바 언어를 이해할 수 있어야 하겠지만, 웹드라이버나 셀레늄 1의 배경 지식이 필요한 건 아니다. 이 책을 끝마칠 때 즈음엔, 테스트 자동화에 필요한 웹드라이버의 방대한 지식을 습득할 수 있다.
이 책의 구성
1장, 웹드라이버와 웹엘리먼트 소개
셀레늄의 역사를 간략하게 알아보면서 셀레늄 1과 셀레늄 2의 차이점을 설명한다. 웹페이지를 인식하는 방식에서 웹드라이버와 차이점을 설명한 다음엔, 웹드라이버에서 말하는 웹엘리먼트가 무엇인지 알아본다. 웹엘리먼트를 지정하고, 찾아낸 웹엘리먼트를 기반으로 간단한 액션을 실행해보면서 마무리한다.
2장, 고급 사용자 인터랙션
조금 더 심도 있게 웹드라이버로 할 수 있는 고급 액션을 알아본다. 웹페이지에서 드래그앤드롭으로 엘리먼트를 다른 프레임으로 옮기거나 웹엘리먼트에서 우클릭하는 액션을 수행하는 등 흥미로운 예제를 많이 만날 수 있다.
3장, 웹드라이버 기능 알아보기
웹페이지를 스크린샷으로 기록하거나 자바스크립트의 실행, 쿠키와 프록시를 다루는 웹드라이버의 특수 기능을 다룬다.
4장, 웹 브라우저를 지원하는 다양한 웹드라이버
FirefoxDriver와 IEDriver, ChromeDriver 같은 다양한 웹드라이버 구현체에 대해 설명한다. 웹드라이버는 1장 '웹드라이버와 웹엘리먼트 소개'에도 나와 있지만, 사람들이 많이 사용하는 웹 브라우저에 대응할 수 있도록 대부분의 브라우저 구현체를 가지고 있다.
5장, 웹드라이버 이벤트의 이해
이벤트 핸들링과 관련된 웹드라이버의 기능을 다룬다. 웹엘리먼트 값의 변경이나 브라우저의 뒤로 가기, 스크립트 실행의 완료 등이 여기서 말하는 이벤트에 해당한다.
6장, 파일 입출력 핸들링
웹드라이버에서 제공하는 파일 핸들링 기능을 설명한다. 파일 복사와 업로드, 파일 삭제가 6장에서 다루는 주된 내용이다.
7장, Exploring RemoteWebDriver와 WebDriverBackedSelenium
웹드라이버에서 가장 중요한 내용 두 가지를 다룬다. RemoteWebDriver와 WebDriverBackedSelenium인데, 원격지 PC에 설치된 웹드라이버를 통해 테스트를 수행하려면, RemoteWebDriver 클래스를 사용해 명령어를 처리해야 한다. 한편, 웹드라이버로 많이 하는 테스트 중 하나는 브라우저 호환성 테스트다. WebDriverBackedSelenium에 관한 내용이 7장의 나머지 부분을 차지한다. 웹드라이버를 사용하고 싶지만, 아직 많은 테스트 스크립트가 셀레늄 1로 작성되어있을 때 지금 나오는 내용이 유용하다. 마지막에는, 셀레늄 1의 API를 사용하는 기존 코드를 셀레늄 API로 마이그레이션한다.
8장, 셀레늄 그리드
흔히 그리드라고 부르는, 셀레늄에서 가장 흥미롭고 중요한 기능 중 하나를 배운다. 그리드를 사용하면 자동화 시나리오를 서버로 보내 원하는 환경에서 테스트를 수행할 수 있다. 대상 플랫폼은 OS와 브라우저의 종류, 버전을 명시하는 것으로 알 수 있다. 원하는 환경의 노드를 등록했고 사용 가능한 상태로 만들면, 서버는 노드에 테스트 수행을 지시할 수 있다. 이제 노드는 자동화 테스트에 대한 책임을 지고 시나리오대로 테스트한 후 결과를 서버에 보낸다.
9장, PageObject 설계 패턴
페이지 오브젝트 패턴으로 잘 알려진 설계 패턴을 다룬다. 입증된 방식의 설계 기법을 통해 자동화 프레임워크 구축을 더 수월하게 할 수 있다.
10장, iOS와 Android 앱 테스트
웹드라이버로 작성한 스크립트를 사용해 iOS와 안드로이드 애플리케이션을 테스트하는 방법을 알아본다. 10장에서는 비교적 최근에 나온 도구인 Appium 사용법도 다룬다.
목차
목차
- 1장 웹드라이버와 웹엘리먼트 소개
- 셀레늄의 역사
- 셀레늄 1의 별칭. 셀레늄 리모트 컨트롤 또는 셀레늄 RC
- 셀레늄 2의 별칭. 웹드라이버 또는 셀레늄 웹드라이버
- 셀레늄 1과 셀레늄 2의 차이점
- 브라우저 핸들링
- 친숙한 API의 사용
- 모바일 앱의 지원
- 개발자 지원과 고급 기능
- 이클립스 프로젝트 설정
- 웹엘리먼트
- 웹 페이지에서 웹엘리먼트 지정하기
- findElement( ) 메소드
- findElements( ) 메소드
- 파이어버그
- By 지정자 사용하기
- By.partialLinkText( ) 메소드
- 웹엘리먼트에서 할 수 있는 여러 가지 동작
- getAttibute( ) 메소드
- sendKeys( ) 메소드
- clear( ) 메소드
- submit( ) 메소드
- getCssValue( ) 메소드
- getLocation( ) 메소드
- getSize( ) 메소드
- getText( ) 메소드
- getTagName( ) 메소드
- isDisplayed( ) 메소드
- isEnabled( ) 메소드
- isSelected( ) 메소드
- 웹 페이지에서 웹엘리먼트 지정하기
- 요약
- 2장 고급 사용자 인터랙션
- 액션을 만들어 실행하기
- 마우스 인터랙션
- moveByOffset 액션
- click 액션
- 웹엘리먼트를 사용하는 click 액션
- clickAndHold 액션
- 웹엘리먼트를 사용하는 clickAndHold 액션
- release 액션
- 웹엘리먼트를 사용하는 release 액션
- moveToElement 액션
- dragAndDropBy 액션
- doubleClick 액션
- 웹엘리먼트를 사용하는 doubleClick 액션
- 웹엘리먼트를 사용하는 contextClick 액션
- 현재 위치에서 contextClick 액션
- 키보드 인터랙션
- KeyDown, KeyUp 액션
- sendKeys( ) 메소드
- 마우스 인터랙션
- 요약
- 3장 웹드라이버 기능 알아보기
- 브라우저 환경 설정
- 스크린샷 캡처
- 윈도우창과 iFrame 지정하기
- 윈도우창 전환
- 프레임 간 전환
- 알림창 핸들링
- 브라우저 내비게이션 제어
- 로딩 중인 웹엘리먼트 기다리기
- 묵시적 대기 시간
- 명시적 대기 시간
- 쿠키 핸들링
- 요약
- 4장 웹 브라우저를 지원하는 다양한 웹드라이버
- 파이어폭스 드라이버
- 파이어폭스 프로필
- 파이어폭스 익스텐션 추가하기
- 프로필 저장과 불러오기
- 파이어폭스 환경 설정
- 환경 설정 다루기
- 고정설정의 이해
- 파이어폭스 바이너리
- 여러 버전의 파이어폭스 설치
- InternetExplorerDriver
- InternetExplorerDriver 설치
- IE 브라우저를 사용하는 테스트 스크립트 작성
- IEDriver 서버 실행
- IEDriver로 브라우저에서 할 수 있는 여러 가지 설정
- ChromeDriver
- ChromeDriver 설치
- 크롬 브라우저를 사용하는 테스트 스크립트 작성
- ChromeOptions 사용하기
- SafariDriver
- 사파리 브라우저를 사용하는 테스트 스크립트 작성
- OperaDriver
- OperaDriver 설치
- 오페라 브라우저를 사용하는 테스트 스크립트 작성
- 파이어폭스 프로필
- 요약
- 5장 웹드라이버 이벤트의 이해
- EventFiringWebDriver와 EventListener 클래스
- EventListener 인스턴스 생성
- WebDriverEventListener 인터페이스 구현
- AbstractWebDriverEventListener 상속 구현
- WebDriver 인스턴스 생성
- EventFiringWebDriver와 EventListener 인스턴스 생성
- EventFiringWebDriver와 EventListener 등록
- 이벤트 발생과 확인
- 여러 개의 EventListener 등록
- WebDriver에서 제공하는 이벤트 리스너
- WebElement 값 변경 이벤트
- WebElement 클릭 이벤트
- WebElement 찾기 이벤트
- 브라우저 뒤로 가기 이벤트
- 브라우저 앞으로 가기 이벤트
- navigateTo 이벤트
- 스크립트 실행 이벤트
- 예외 처리
- EventFiringWebDriver에 등록한 EventListener 제거
- 요약
- 6장 파일 입출력 핸들링
- FileHandler 클래스
- 원하는 디렉터리로 파일 복사
- 확장자 이름으로 원하는 파일 복사
- 새로운 디렉터리 생성
- 파일 또는 디렉터리 삭제
- IsZipped( ) 메소드
- makeExecutable( ) 메소드
- makeWritable( ) 메소드
- 파일 내용 읽기
- canExecute( ) 메소드
- TemporaryFilesystem 클래스 알기
- 디폴트 임시 파일 시스템
- DefaultTmpFS에 새로운 디렉터리 생성
- 임시 디렉터리 삭제
- 다수의 파일 삭제
- 임시 파일 시스템 변경
- Zip 클래스
- 디렉터리 압축
- 디렉터리 압축 해제
- 요약
- 7장 RemoteWebDriver와 WebDriverBackedSelenium
- RemoteWebDriver 소개
- RemoteWebDriver 서버
- RemoteWebDriver 서버 다운로드
- 서버 실행
- RemoteWebDriver 클라이언트
- RemoteWebDriver 서버를 위한 테스트 스크립트 수정
- RemoteWebDriver를 통한 Firefox 브라우저 사용법
- RemoteWebDriver를 통한 IE 브라우저 사용법
- RemoteWebDriver를 통한 Chrome 브라우저 사용법
- RemoteWebDriver 클라이언트의 스크린샷 기능
- RemoteWebDriver 서버
- JSON 와이어 프로토콜
- 클라이언트 라이브러리 구현
- WebDriverBackedSelenium 알아보기
- 요약
- 8장 셀레늄 그리드
- 셀레늄 그리드 알기
- 허브의 역할
- 노드의 역할
- 셀레늄 그리드를 위한 테스트 스크립트로 수정
- 미등록 환경에 대한 요청
- 노드가 작업 중일 때 요청 큐잉하기
- 같은 환경의 노드에서 선택 우선권
- 셀레늄 그리드 설정
- 노드 설정 파라미터
- 지원 브라우저 설정
- 노드 타임아웃 설정
- 브라우저 인스턴스의 생성 제한 설정
- 노드의 자동 등록
- 노드의 상태 체크
- 노드의 등록 해제
- 브라우저 타임아웃 설정
- 허브 설정 파라미터
- 테스트 환경이 준비될 때까지 대기하기
- CapabilityMatcher 사용자정의
- 새로운 세션을 만들 때 사용하는 WaitTimeout
- 셀레늄 그리드와 노드의 환경 설정 - 제목 다시!!!
- 노드 설정 파라미터
- 요약
- 9장 PageObject 설계 패턴
- 워드프레스 블로그를 대상으로 테스트 케이스 만들기
- 테스트 케이스 1: 새로운 글 등록하기
- 테스트 케이스 2: 글 지우기
- 테스트 케이스 3: 전체 게시글 카운트하기
- 페이지 오브젝트 패턴이란
- @FindBy 애노테이션
- PageFactory의 활용
- PageObject 설계를 위한 고려 사항
- 서비스 제공자 관점에서 웹 페이지 바라보기
- 부가 서비스 제공
- PageObject에서 또 다른 PageObject의 사용
- AddNewPost 페이지 오브젝트
- AllPostsPage 페이지 오브젝트
- 사용자 액션이 아닌 서비스로 접근하는 메소드 활용법
- 초기화 이후의 웹엘리먼트 식별
- 페이지에 특화된 부분 분리
- Loadable 컴포넌트
- 워드프레스 테스트 실습
- 테스트에 사용하는 PageObject 설명
- AdminLoginPage 페이지 오브젝트
- AllPostsPage 페이지 오브젝트
- AddNewPostPage 페이지 오브젝트
- EditPostPage 페이지 오브젝트
- DeletePostPage 페이지 오브젝트
- 테스트 케이스 작성
- 게시글 추가 테스트
- 게시글 수정 테스트
- 게시글 삭제 테스트
- 게시글 카운트 테스트
- 테스트에 사용하는 PageObject 설명
- 요약
- 10장 iOS와 Android 앱 테스트
- 모바일 앱의 서비스 방식
- 다양한 지원 도구
- Appium을 사용하는 앱 테스트 자동화
- iOS 앱 테스트 자동화
- Android 앱 테스트 자동화
- Appium 사용하기
- 엑스코드 셋업
- Android SDK 설치
- Appium 설치
- iOS 앱 테스트
- Android 앱 테스트
- 요약
도서 오류 신고
정오표
정오표
2016. 7. 12 수정사항
[p10. 목차 아래에서 2행]
getAttibute( ) 메소드
->
getAttribute( ) 메소드
[p56. 아래에서 8행]
getAttibute( ) 메소드
->
getAttribute( ) 메소드
[p57. 16행]
+searchButton.getAttribute("id"));
->
볼드 강조
[p57. 마지막 코드 실행 결과창]
Name of the button is: btnk
Id of the button is: gbqfba
Class of the button is: gbqfba
Label of the button is: Google Search
->
Name of the button is: btnk
Id of the button is:
Class of the button is:
Label of the button is: Google Search