다섯 번째.
Playwright에서 테스트를 작성할 때 자주 사용되는 주요 키워드와 객체를 학습하고, 이를 활용하여 효율적이고 직관적인 스크립트를 작성하는 방법을 익힙니다. 브라우저 상호작용, 조건 처리, 반복 및 예외 처리 등을 통해 강력한 테스트를 구현할 수 있습니다.
Playwright에서 브라우저와 직접 상호작용하는 주요 객체입니다. 페이지 이동, 스크린샷 캡처, 요소 탐색 등 대부분의 작업이 page를 통해 이루어집니다.
주요 기능
• 페이지 이동: URL로 이동 (page.goto())
• 요소 탐색: 특정 요소를 찾기 위한 locator 호출
• 스크린샷 저장: page.screenshot()로 화면 상태 저장
HTML 요소를 선택하고, 클릭, 입력 등 다양한 동작을 수행하는 객체입니다. locator는 요소가 상호작용 가능할 때까지 자동으로 기다려 테스트를 안정적으로 수행합니다.
주요 기능
• 클릭: 버튼, 링크 등 요소 클릭
• 입력: 텍스트 필드에 데이터 입력 (locator.fill())
• 검증: 특정 요소의 텍스트나 속성 확인 (locator.text_content())
Playwright 테스트를 객체 지향 방식으로 구성할 때, 클래스 내에서 인스턴스를 참조하는 데 사용됩니다. 테스트의 재사용성과 유지보수를 높이는 데 유용합니다.
주요 활용
• 클래스 내부에서 page와 locator를 멤버 변수로 관리
• 반복적으로 사용되는 메서드(예: 로그인, 데이터 입력) 생성
특정 조건에 따라 테스트 동작을 분기할 때 사용합니다. 예를 들어, 특정 요소가 화면에 표시될 때만 작업을 수행하도록 설정할 수 있습니다.
활용 예
• 특정 버튼이 화면에 표시되었을 때만 클릭
• 오류 메시지가 표시되는 경우 다음 단계를 건너뜀
여러 요소를 순회하거나, 특정 상태가 만족될 때까지 작업을 반복할 때 사용됩니다.
활용 예
• 리스트나 테이블 데이터를 하나씩 확인
• 특정 메시지가 나타날 때까지 대기
테스트 실행 중 발생하는 오류를 잡아내어 대체 동작을 수행하거나 테스트 실패를 방지합니다.
활용 예
• 특정 요소가 없을 때도 테스트를 중단하지 않고 다른 동작 수행
• 네트워크 오류가 발생했을 때 재시도 로직 추가
Playwright는 비동기 환경에서 동작하므로, async와 await를 통해 작업 순서를 제어합니다. 비동기 작업을 처리하면 코드 실행 흐름이 더욱 명확해집니다.
활용 예
• 페이지 로드 완료 대기 (await page.goto())
• 특정 요소가 나타날 때까지 대기 (await locator.wait_for())
예시 1: if와 locator를 활용한 조건부 로그인 테스트
• 이 코드는 로그인 버튼이 보이는 경우에만 사용자 이름과 비밀번호를 입력하고 로그인 버튼을 클릭하는 동작을 수행합니다.
• 조건문 if는 버튼이 표시되지 않는 상황에서도 테스트를 중단하지 않도록 도와줍니다.
• locator.is_visible()은 요소가 DOM에 존재하고 화면에 표시되는지 확인하는 Playwright 메서드입니다.
예시 2: for 반복문을 사용한 테이블 데이터 출력
https://gist.github.com/james-kanghj/b5c5c055eceb662e168475c24705770d
• .data-row라는 CSS 선택자로 테이블의 모든 행을 선택합니다.
• locator.all()은 모든 요소를 배열로 반환하며, 이를 for 반복문으로 순회하여 각 행의 텍스트 내용을 출력합니다.
• 이 패턴은 리스트, 테이블, 메뉴 항목 등 여러 요소를 처리할 때 유용합니다.
예시 3: 비동기 작업과 await를 활용한 페이지 이동
https://gist.github.com/james-kanghj/3827f6145ac5763800ff5b798ec14ddf
• Playwright는 비동기 환경에서 동작하기 때문에, goto()로 페이지 이동 후 다음 작업(버튼 클릭)이 수행되도록 await를 사용합니다.
• await는 페이지가 로드되거나 요소가 상호작용 가능한 상태가 될 때까지 기다립니다.
• 이를 통해 테스트의 안정성을 높이고, 비동기 작업의 순서를 명확히 할 수 있습니다.
1. 조건부 테스트 작성
• 특정 요소(예: 버튼, 메시지)가 화면에 표시될 때만 동작을 수행하도록 조건문(if)을 활용한 테스트를 작성해보세요.
2. 리스트 순회와 데이터 검증
• 페이지의 목록 또는 테이블 데이터를 반복문(for)으로 순회하며 각 항목의 텍스트를 검증하는 테스트를 작성해보세요.
3. 예외 처리 추가
• 특정 요소가 없는 상황에서 예외 처리(try-except)를 활용하여 오류를 처리하거나 대체 동작을 수행하는 테스트를 작성해보세요.
4. 비동기 작업 연습
• async와 await를 활용해 페이지 이동 후 특정 요소가 나타날 때까지 대기하고, 상호작용을 수행하는 테스트를 작성해보세요.
Playwright에서 제공하는 page와 locator는 테스트의 중심 역할을 하며, self, 조건문, 반복문 등의 Python 키워드를 함께 활용하면 더욱 유연하고 재사용성 높은 테스트 스크립트를 작성할 수 있습니다. 강의에서는 이러한 키워드와 객체를 실습하며 상세하게 익히게 됩니다.
* 강의 영상: 추후 별도 공지
(바로 소식을 받고 싶다면, 설문 을 작성해주세요!)