테스트 자동화, 크롤링 프로젝트를 진행하면서 사용한 playwright와 selenium 후기
미리 결론을 말하자면 앞으로 나는 테스트 자동화나 크롤링할 때는 무조건 Playwright를 사용할 것 같습니다.
playwright를 쓰면 좋은점을 써보려합니다
환경)
- 파이썬, Mac m1
1. 브라우저와 브라우저 드라이버 관리
Playwright를 설치하면 firefox, chrome 등 최신 브라우저와 연동되는 브라우저 드라이버를 자동을 다운로드하고 관리합니다. 이를 통해 사용자는 브라우저와 드라이버간의 호환성을 확인할 필요가 없습니다
selenium을 사용할때 이 브라우저와 드라이버간의 호환성 때매 정말 시간을 많이 써봐서 이는 매우 매력적 이었습니다. 예를 들어 테스트 자동화를 위해 여러 브라우저를 사용해야 한다면 여러 브라우저를 설치하고 그에 맞는 드라이버를 찾을 필요가 없어집니다.
번외로 이전에 selenium 크롤링 코드를 docker로 빌드한 적이 있는데
buildx를 통해 멀티 아키텍처 빌드하기 위해 selenium에 필요한 chrome을 arm, amd 아키텍처에 따라 다르게 설치해야 했습니다.
dockerfile에서 amd아키텍처에 맞는 chrome을 설치하고 arm아키텍처 리눅스 버전은 크롬이 없어서 chromium을 설치한 예시입니다.
RUN if [ "$TARGETARCH" = "amd64" ]; then \
echo "Installing Chrome for amd64..." && \
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && \
apt install -y ./google-chrome-stable_current_amd64.deb ; \
elif [ "$TARGETARCH" = "arm64" ]; then \
echo "Installing Chromium for arm64..." && \
apt-get update && apt-get install -y chromium ; \
else \
echo "Unsupported architecture: $TARGETARCH" && exit 1 ; \
fi
빌드
docker buildx build --platform linux/amd64,linux/arm64 -t 유저명/서비스명:태그 . --push
위 방식 말고 더 좋은 방법 있으시면 추천 부탁드립니다.
2. 테스트 동작 녹화
Playwright codegen을 통해서 브라우저에서 동작하는 모든 행동을 실시간으로 파이썬 스크립트로 만들어줍니다. 이게 테스트 코드를 작성할 때 시간을 정말 많이 줄여줍니다.
3. 텍스트 search 함수
크롤링을 하거나 테스트를 할 때 특정 글자를 찾는 경우가 정말 많습니다.
예시로 “더보기” 라는 글자가 들어가 element를 찾는 코드를 비교하겠습니다.
#selenium
element = driver.find_element_by_xpath("//*[contains(text(), '더보기')]")
#Playwirght
element = page.textContent('더보기');
셀레니움은 xpath 셀렉터로 번거롭게 찾는 반면 playwright 그냥 텍스트로 찾을 수 있습니다.
이 뿐만 아니라 편하고 효율적인 다양한 함수들이 있습니다.
'데이터 분석' 카테고리의 다른 글
[Python]500M*500M 정사각형으로 서울 구역 나누어 시각화에 이용하기 (0) | 2022.06.29 |
---|