'제주항공'에 접속해서 출발지, 도착지, 날짜 선택, '선택완료'버튼 누르기 등의 작업을 했다.
구현되는 모습을 찍은 영상이 있지만, 영상 업로드를 지원하지를 않으니......
기존엔, 크롬 드라이버 클래스가 계속 누적된 채 작동되다보니 버벅이는 현상이 심했고, Run의 70% 정도가 런타임 에러가 나왔다.
왜냐하면, 아직 웹사이트는 열리지 않았는데
코드는 특정 태그를 찾고 클릭을 누르는 행위를 진행하고 있었기 때문이다.
'크롬 드라이버 서버'의 사용 주기를 설정하여
웹사이트 접속시간을 획기적으로 줄이는 데 시간을 할애하였다.
[ 변경 전 코드 ]
# 1. 제주항공 홈페이지 접속
self.driver = webdriver.Chrome(
'/Users/khh18/Downloads/chromedriver_win32/chromedriver.exe')
self.driver.get(homepage)
sleep(2)
# 2. '편도' 클릭 (원래는 '왕복'으로 default 되어 있음)
self.driver.find_element_by_xpath(
'//input[@id="btnTripSingle"]').click()
[ 변경 후 코드 ]
# 1. 제주항공 홈페이지 접속
self.service = Service(
'/Users/khh18/Downloads/chromedriver_win32/chromedriver.exe')
self.service.start()
self.driver = webdriver.Remote(self.service.service_url)
# self.driver = webdriver.Chrome(
# '/Users/khh18/Downloads/chromedriver_win32/chromedriver.exe')
self.driver.get(homepage)
# self.driver.get(homepage)
# sleep(2)
# 2. '편도' 클릭 (원래는 '왕복'으로 default 되어 있음)
self.driver.find_element_by_xpath(
'//input[@id="btnTripSingle"]').click()
속도가 너무 느려서 구글링 및 selenium 공식 문서를 확인한 결과,
import time
from selenium import webdriver
driver = webdriver.Chrome('/path/to/chromedriver') # Optional argument, if not specified will search path.
driver.get('http://www.google.com/');
time.sleep(5) # Let the user actually see something!
search_box = driver.find_element_by_name('q')
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5) # Let the user actually see something!
driver.quit()
와 같은 방식으로 할 경우,
속도가 획기적으로 빨라진다고 나와있었다. 구글링해서 직접 찾은 점 그리고
특히! 내 코드에 맞도록 조금씩 수정해서 완성한 점이 뿌듯했다.
크롬 드라이버 서버의 버그 이슈가 있다.
Error reading broker pipe: 파이프가 끝났습니다. (0x6D)
Error sending sync broker message: 파이프가 닫히는 중입니다. (0xE8)
구글링을 해보니 다음 버전에서 개선되서 RELEASE 될 예정이라고 한다.
우선 내 크롬 버전부터가 최신버전이 아니며, 그 버전에 맞는 크롬 드라이버를 설치했었다.
내가 당장 개선할 수 있는 크롬 업그레이드부터 해야겠다.
- One step at a time -