selenium: WebDriver

hwisaac·2024년 3월 28일

WebDriver

WebDriver는 브라우저를 네이티브하게 조작하며, Selenium 서버를 사용하여 로컬 또는 원격 머신에서 사용자처럼 작동합니다. 이는 브라우저 자동화 측면에서 큰 발전을 나타냅니다. Selenium WebDriver는 개별 브라우저 제어 코드의 언어 바인딩 및 구현을 의미합니다. 이를 일반적으로 WebDriver로 참조합니다. Selenium WebDriver는 W3C 권고안이며, 간단하고 더 간결한 프로그래밍 인터페이스로 설계되었습니다.

  • WebDriver는 간결한 객체지향 API입니다.
  • 브라우저를 효과적으로 조작합니다.

시작하기

만약 Selenium에 처음이라면, 즉시 시작할 수 있도록 도와줄 몇 가지 리소스가 있습니다.

Selenium은 WebDriver를 통해 시장의 모든 주요 브라우저의 자동화를 지원합니다. WebDriver는 웹 브라우저의 동작을 제어하기 위한 언어 중립적 인터페이스를 정의하는 API 및 프로토콜입니다. 각 브라우저는 특정 WebDriver 구현체, 즉 드라이버에 의해 지원됩니다. 드라이버는 브라우저로의 위임을 담당하고 Selenium과 브라우저 간의 통신을 처리합니다.

이 분리는 브라우저 공급업체가 자신들의 브라우저에 대한 구현 책임을 지도록 의도된 노력의 일부입니다. Selenium은 가능한 경우 이러한 써드파티 드라이버를 사용하지만, 이게 현실이 아닌 경우 프로젝트에서 관리하는 자체 드라이버를 제공합니다.

Selenium 프레임워크는 사용자 인터페이스를 통해 모든 이러한 요소를 투명하게 사용할 수 있도록 묶어줍니다. 이는 크로스 브라우저 및 크로스 플랫폼 자동화를 가능하게 합니다.

Selenium 설정은 다른 상용 도구의 설정과는 매우 다릅니다. Selenium 코드를 작성하기 전에, 사용할 언어의 바인딩 라이브러리, 사용하려는 브라우저, 그리고 해당 브라우저의 드라이버를 설치해야 합니다.

아래 링크를 따라 Selenium WebDriver를 시작하세요.

만약 저코드/레코드 앤 플레이백 도구로 시작하고 싶다면, Selenium IDE를 확인하세요.

작업을 시작한 후에, 테스트를 확장하고 싶다면, Selenium Grid를 확인하세요.

Selenium 라이브러리 설치

선호하는 프로그래밍 언어를 위해 Selenium 바인딩을 설치하는 방법입니다.

먼저 자동화 프로젝트에 Selenium 바인딩을 설치해야 합니다. 라이브러리의 설치 프로세스는 사용하려는 언어에 따라 다릅니다. 최신 버전을 사용하는지 확인하려면 Selenium 다운로드 페이지를 확인하세요.

각 Selenium 버전의 최소 지원 Python 버전은 PyPiSupported Python Versions에서 확인할 수 있습니다.

Selenium을 설치하는 몇 가지 다른 방법이 있습니다.

Pip

pip install selenium

다운로드

또는 PyPI 소스 아카이브 (selenium-x.x.x.tar.gz)를 다운로드하여 setup.py를 사용하여 설치할 수 있습니다.

python setup.py install

프로젝트에 필요

프로젝트에서 사용하려면 requirements.txt 파일에 추가하세요.

selenium==4.18.1

첫 번째 Selenium 스크립트 작성

Selenium 스크립트를 작성하는 단계별 지침

Selenium을 설치한 후에 Selenium 코드를 작성할 준비가 되었습니다.

여덟 가지 기본 구성 요소

Selenium이 하는 모든 것은 브라우저에 명령을 보내거나 정보 요청을 보내는 것입니다. Selenium으로 수행하는 대부분의 작업은 이러한 기본 명령들의 조합입니다.

코드를 컨텍스트에서 볼 수 있도록 "GitHub에서 전체 예제 보기" 링크를 클릭하세요.

  1. 세션 시작

세션을 시작하는 자세한 내용은 드라이버 세션 문서를 참조하세요.

driver = webdriver.Chrome()
  1. 브라우저에서 작업 수행

이 예제에서는 웹 페이지로 이동합니다.

driver.get("https://www.selenium.dev/selenium/web/web-form.html")
  1. 브라우저 정보 요청

브라우저에 대한 다양한 유형의 정보를 요청할 수 있습니다. 창 핸들, 브라우저 크기/위치, 쿠키, 알림 등이 포함됩니다.

title = driver.title
  1. 대기 전략 설정

코드를 브라우저의 현재 상태와 동기화하는 것은 Selenium의 가장 큰 도전 중 하나이며, 이를 잘 수행하는 것은 고급 주제입니다.

요소를 찾기 전에 페이지에 요소가 있는지 확인하고, 요소에 상호 작용하기 전에 요소가 상호 작용 가능한 상태인지 확인해야 합니다.

암시적 대기는 거의 항상 최상의 해결책은 아니지만, 여기에서 쉽게 설명할 수 있기 때문에 여기서는 이를 사용합니다.

대기 전략에 대해 더 알아보기.

driver.implicitly_wait(0.5)
  1. 요소 찾기

대부분의 Selenium 세션에서 수행하는 명령은 요소와 관련이 있으며, 요소를 찾지 않고는 요소와 상호 작용할 수 없습니다.

text_box = driver.find_element(by=By.NAME, value="my-text")
submit_button = driver.find_element(by=By.CSS_SELECTOR, value="button")
  1. 요소에서 작업 수행

요소에 대해 수행할 수 있는 작업은 손에 꼽을 정도이지만, 자주 사용됩니다.

text_box.send_keys("Selenium")
submit_button.click()
  1. 요소 정보 요청

요소에는 요청할 수 있는 많은 정보가 저장되어 있습니다.

text = message.text
  1. 세션 종료

이렇게 하면 드라이버 프로세스가 종료되며 기본적으로 브라우저도 닫힙니다. 이 드라이버 인스턴스에는 더 이상 명령을 보낼 수 없습니다. 세션 종료 보기를 참조하세요.

driver.quit()

Selenium 코드 구성 및 실행

IDE 및 테스트 러너 라이브러리를 사용하여 Selenium 코드를 확장하기

내용 도움말

참고: 이 섹션에는 추가적이거나/또는 업데이트된 콘텐츠가 필요합니다.

이 페이지는 매우 불완전하며 추가해야 할 내용이나 설명해야 할 내용에 대한 자리 표시자가 있습니다.

도움을 원한다면 기여 가이드라인를 확인하세요.

한두 개의 일회성 스크립트를 실행하는 것 이상을 원한다면, 코드를 구성하고 작업하는 방법에 대한 아이디어를 제공하는 이 페이지를 참고하세요.

일반적인 사용 사례

대부분의 사람들은 Selenium을 사용하여 웹 응용 프로그램에 대한 자동화된 테스트를 실행하지만, Selenium은 브라우저 자동화의 모든 사용 사례를 지원합니다.

반복 작업

웹 사이트에 로그인하고 무언가를 다운로드하거나 양식을 제출해야 할 수 있습니다. 미리 설정된 시간에 서비스와 함께 실행할 Selenium 스크립트를 만들 수 있습니다.

웹 스크래핑

API가 없는 사이트에서 데이터를 수집하려고 합니까? Selenium을 사용하여 이 작업을 수행할 수 있지만, 일부 웹 사이트에서는 허용되지 않을 수 있으며, 다른 웹 사이트에서는 Selenium을 차단할 수도 있으니 웹 사이트의 서비스 약관에 익숙해져야 합니다.

테스트

테스트를 위해 Selenium을 실행하려면 Selenium이 수행한 작업에 대한 확인을 해야 합니다. 따라서 좋은 어서션 라이브러리가 필요합니다. 테스트를 위해 구조를 제공하기 위해 추가 기능이 필요하면 테스트 러너를 사용해야 합니다.

통합 개발 환경(IDE)

Selenium 코드를 사용하는 방법과 관계없이 효율적으로 작성하거나 실행할 수 없습니다. 여기에는 일반적인 옵션이 있습니다...

0개의 댓글