처음 사용해 본 셀레늄
개요
Selenium이라는 도구를 들은 적은 있지만, 지금까지 사용할 기회가 없었다.
하지만, 웹상인 단조 작업을 반복하게 되어, 게다가 그 수가 방대하고 매우 귀찮게 합니다.
그래서 자동화하자! …라는 이야기가 되어, Web의 자동화 툴로서 Selenium을 사용해 보았다. 그것의 소개.
아래에서는 OS는 Windows10, 브라우저는 Google 크롬 , 프로그래밍 언어는 Python3.9를 사용하고 있다.
소개
Selenium을 사용하려면 다음이 필요합니다.
Selenium을 사용하려면 다음이 필요합니다.
아래에서는 ChromeDriver 실행 파일을 다운로드하는 방법과 chromedriver-binary를 import하는 방법을 썼습니다.
어느 쪽이든 동작에 문제는 없지만, 후자는 개발 환경에서 import한 것이 사용되고 있지 않다는 경고가 나오는 것이 싫기 때문에, 나는 전자를 사용하고 있다.
ChromeDriver를 다운로드하는 방법
ChromeDriver 개발 페이지 에서 대상 OS와 Chrome 버전에 맞는 드라이버를 데려 와서 원하는 곳에 놓습니다.
(이하에서는 C:\git\project\driver\chromedrive.exe에 넣었다고 가정하여 이야기를 진행한다)
사용중인 Chrome 버전은 "도움말"> "Google Chrome 정보"에서 확인할 수 있습니다.
pip로 Selenium을 설치.
pip install selenium
Python(test.py)의 샘플 코드는 다음과 같습니다.
from selenium import webdriver
import time
driver = webdriver.Chrome('C:\git\project\driver\chromedrive.exe')
driver.get('https://www.google.co.jp/')
time.sleep(5)
search_box = driver.find_element_by_name("q")
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5)
driver.quit()
그리고 Python을 두드리면 Chrome이 열리고 Google 페이지를 표시합니다.
5초 후에 'ChromeDriver'로 검색, 5초 후에 닫는다는 자동화가 가능하다.
python test.py
chromedriver-binary를 사용하는 방법
pip에서 Selenium 및 chromedriver-binary를 설치합니다.
pip install selenium
pip install chromedriver-binary==87.0.4280.88
chromedriver-binary에서 버전을 지정하는 이유는 그때 설치된 Chrome 버전과 일치하고 싶었기 때문입니다.
아무것도 지정하지 않으면 그 때의 최신 버전이 설치되어 Chrome 버전과 맞지 않으면 오류가 발생합니다.
from selenium import webdriver
import time
import chromedriver_binary
driver = webdriver.Chrome()
driver.get('https://www.google.co.jp/')
time.sleep(5)
search_box = driver.find_element_by_name("q")
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5)
driver.quit()
기동이나 동작 방법에 대해서는 위와 같다.
python test.py
기타
위의 방법에서는 Google 크롬 버전이 업데이트되면 드라이버와의 버전이 맞지 않고 시작시 오류가 발생할 수 있습니다.
시험에 사용하는 것만이라면 브라우저도 드라이버도 최신판을 사용하면 좋지만, 그렇지 않은 경우는 브라우저의 자동 갱신을 중지해 두는 것이 좋다.
예를 들어 Google Chrome의 경우 GoogleUpdate.exe가 실행되지 않도록 한다.
다만, 브라우저가 자동 갱신되지 않으면, 버그나 취약성이 남아 버린다.
그 때문에, 예를 들면 상용의 브라우저는 Edge, 자동 조작시키는 브라우저는 Chrome등과, 구별해 두는 편이 좋을 것 같다.
Reference
이 문제에 관하여(처음 사용해 본 셀레늄), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/HirumaT/items/6019d7e58708f68cac85텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)