항공편 검색을 위한 자동화 스크립트
1단계: 최신 크롬 드라이버 다운로드
https://chromedriver.storage.googleapis.com/index.html?path=95.0.4638.69/로 이동
자신의 OS에 맞는 크롬 드라이버 다운받기(저는 윈도우즈 사용중입니다💻)
2단계: 리포지토리 복제 및 가상 환경 설정
복제 저장소: https://github.com/dhruvrajkotia/automation_scripts
- git clone [email protected]:dhruvrajkotia/automation_scripts.git
- cd automation_scripts
- python -m venv (I'm using Python 3.9)
- pip install -r requirements.txt (Install all requirements)
크롬 드라이버를 프로젝트의 chrome_driver 디렉토리에 넣습니다.
훌륭합니다👏, 프로젝트를 설정했습니다.
3단계: Python 스크립트 실행
python google_flights_automation_script.py
하나의 새 브라우저 창이 표시되고 스크립트에서 제공한 매개변수를 기반으로 항공편을 검색하는 것을 볼 수 있습니다.
이제 로컬 파일에서 스크립트를 성공적으로 구성했습니다. 이제 스크립트 논리와 작동 방식에 대해 이야기하겠습니다. 🤞 자동화 스크립트의 결과를 즐겁게 보셨기를 바랍니다.
코드 설명
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
그래서 여기에서는 자동화 스크립트에 셀레늄 라이브러리를 사용하고 있습니다. Selenium은 Python 자동화 스크립트에 사용할 수 있는 최고의 라이브러리 중 하나입니다. 자세한 내용은 셀레늄의 공식 문서를 확인하십시오: https://selenium-python.readthedocs.io/
chromedriver_location = "chrome_driver/chromedriver.exe" # Path of chrome driver script. OS: windows
여기서 우리는 크롬 드라이버에 대한 경로를 제공했습니다.
# test inputs
site = "https://www.google.com/flights?hl=en"
source_city = "Ahmeda"
destination_city = "Mumbai"
departure_date = "2021-11-21" # YYYY-MM-DD
return_date = "2022-02-27"
# XPATH List of the UI elements
source_city_XPATH = "//*[@id='i6']/div[1]/div/div/div[1]/div/div/input"
dropdown_selection_XPATH = "//*[@id='i6']/div[6]/div[2]/div[2]/div[1]/div/input"
destination_XPATH = "//*[@id='i6']/div[4]/div/div/div[1]/div/div/input"
departure_date_XPATH = '//*[@id="yDmH0d"]/c-wiz[2]/div/div[2]/div/c-wiz/div/c-wiz/div[2]/div[1]/div[1]/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div/div[1]/div/input'
return_date_XPATH = '//*[@id="yDmH0d"]/c-wiz[2]/div/div[2]/div/c-wiz/div/c-wiz/div[2]/div[1]/div[1]/div[2]/div[2]/div/div/div[1]/div/div/div[1]/div/div[2]/div/input'
search_button_XPATH = '//*[@id="yDmH0d"]/c-wiz[2]/div/div[2]/div/c-wiz/div/c-wiz/div[2]/div[1]/div[2]/div/button'
calendar_date_XPATH = '//div[@data-iso = "{date}"]//div[@class="lkvzbb KQqAEc"]'
calendar_submit_button_XPATH = '//*[@id="ow59"]/div[2]/div/div[3]/div[3]/div/button'
여기에서 스크립트를 통해 Google 항공편 웹사이트의 값을 채울 정적 테스트 입력을 정의했습니다.
자동화 스크립트를 사용하여 테스트 값을 채우는 데 도움이 되는 UI 구성 요소에 대한 XPATH를 정의했습니다.
driver = webdriver.Chrome(chromedriver_location)
driver.maximize_window()
driver.get(site) # Open Site in new chrome window
따라서 위의 코드를 사용하면 새 크롬 창이 열리고 크롬 창의 크기가 전체 크기로 최대화되고 테스트 입력에서 구성한 사이트가 열립니다. ( https://www.google.com/flights?hl=en )
# source_city selection steps
fly_from = driver.find_element(By.XPATH, source_city_XPATH)
fly_from.click()
fly_from_text = driver.find_element(By.XPATH, dropdown_selection_XPATH)
fly_from_text.send_keys(source_city)
fly_from_text.send_keys(Keys.ENTER)
따라서 여기에서 먼저 소스 도시 요소를 찾습니다. 이를 위해서는 사이트를 열고 검사 창을 열어야 합니다. 요소를 선택하고 요소에 대한 XPATH를 복사합니다.(XPATH 찾는 방법: https://www.browserstack.com/guide/find-element-by-xpath-in-selenium ) 그런 다음 해당 div를 클릭하면 도시 이름을 검색할 수 있는 드롭다운이 열립니다.
# destination_city selection steps
fly_to = driver.find_element(By.XPATH, destination_XPATH)
fly_to.click()
fly_to_text = driver.find_element(By.XPATH, dropdown_selection_XPATH)
fly_to_text.send_keys(destination_city)
fly_to_text.send_keys(Keys.ENTER)
목적지 도시에 대해서도 동일한 순서를 따를 것입니다.
# departure_date selection steps
departure_date_element = driver.find_element(By.XPATH, departure_date_XPATH)
departure_date_element.click()
time.sleep(2)
calendar_div = driver.find_element(By.XPATH, calendar_date_XPATH.format(date=departure_date))
calendar_div.click()
달력 선택기가 달력 날짜를 선택하기 위한 것입니다. 여기에서 먼저 div를 클릭하여 캘린더를 엽니다. 날짜를 선택합니다.
여기에서 YYYY-MM-DD 형식의 날짜가 있는 data-iso인 div의 요소 중 하나를 사용할 것입니다. 따라서 이를 바탕으로 적절한 날짜를 선택할 수 있습니다.
calendar_date_XPATH = '//div[@data-iso = "{date}"]//div[@class="lkvzbb KQqAEc"]'
귀국일에도 같은 방식으로 공연합니다.
# return_date selection steps
return_date_calendar_div = driver.find_element(By.XPATH, calendar_date_XPATH.format(date=return_date))
return_date_calendar_div.click()
모든 정보를 추가했으면 캘린더 선택기에서 완료 버튼을 클릭해야 합니다.
# click on the Done button in calendar picker
submit_button = driver.find_element(By.XPATH, calendar_submit_button_XPATH)
submit_button.click()
예, 축하합니다. 항공편 검색을 위한 자동화 스크립트에 관한 모든 개념을 이해하셨을 것입니다.
🤞 마음에 드셨기를 바랍니다. 궁금한 점이 있으면 언제든지 문의해 주세요.
Twitter에 저를 올려주세요. ChatBot 개발, NLP, Python, NodeJS에 관한 정보를 정기적으로 게시하고 있습니다. 연락하게 되어 기쁩니다.
Reference
이 문제에 관하여(항공편 검색을 위한 자동화 스크립트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dhruv_rajkotia/automation-script-for-the-flight-searching-36g1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)