Selenium 활용1

2023. 4. 26. 21:12·python/python_selenium

목표 : 네이버 항공에서 제주도행 항공권 찾기

from selenium import webdriver
from selenium.webdriver.common.by import By

# webdriverWait을 사용하기 위한 import
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

def wait_until(xpath_str):
    # 아래값이 나올때까지 기다림 ( 다만 나오지 않는 경우 최대 3초까지 기다림. )
    WebDriverWait(browser, 3).until(EC.presence_of_element_located\\
        ((By.XPATH, xpath_str)))

browser = webdriver.Chrome()
browser.maximize_window() # 크롬창을 최대로 키움
browser.get("<https://flight.naver.com/>")

# browser.implicitly_wait(3)
time.sleep(3)

# 처음나오는 광고 닫기 선택
elems = browser.find_elements(By.XPATH, '//button[@class="btn"]')
elems[1].click()

# 상위 button에서 하위의 2번째 버튼을 찾는다.
elems = browser.find_element(By.XPATH, '//div[@class="btns"]/button[1]')

# class="btn as_share naver-splugin spi_sns_share"
# class="jsx-1527821584 btn as_top"
# class="btn" 이렇게 3개의 class가 선택됨(왤까?)
# elems = browser.find_elements(By.CLASS_NAME, "btn")
# elems[3].click()

# // : html 전체중에서 찾겠다는 의미
# button 중에서 text 가 `가는 날`인 버튼 찾음.
time.sleep(1)
browser.find_element(By.XPATH, '//button[text() ="가는 날"]').click()

# 첫번째 27일~ 첫번째 30일 선택
wait_until('//b[text() = "27"]')
day = browser.find_elements(By.XPATH, '//b[text() = "27"]')
day[0].click()
wait_until('//b[text() = "30"]')
day = browser.find_elements(By.XPATH, '//b[text() = "30"]')
day[0].click()

# 도착 클릭 > 국내 클릭 > 제주도 클릭
wait_until('//b[text() = "도착"]')
arrival = browser.find_element(By.XPATH, '//b[text() = "도착"]').click()
wait_until('//button[text() = "국내"]')
browser.find_element(By.XPATH, '//button[text() = "국내"]').click()
# 텍스트에 `제주`를 포함하는 값을 클릭함 = contains(text(), "제주국제공항")
wait_until('//i[contains(text(), "제주국제공항")]')
browser.find_element(By.XPATH, '//i[contains(text(), "제주국제공항")]').click()

# wait_until('//spot[contains(text(), "항공권 검색")]')
browser.find_element(By.XPATH, '//span[contains(text(), "항공권 검색")]').click()

# div인데 class값이 dom~ 인 값을 찾을 때, @를 사용함.
# <div class="domestic_Flight__sK0eA result"> 를 찾음.
elem = WebDriverWait(browser, 30).until(EC.presence_of_element_located\
        ((By.XPATH, '//div[@class = "domestic_Flight__sK0eA result"]')))
print(elem.text)

input("종료하려면 enter을 입력하세요")
browser.quit()
 
  • browser.maximize_window() : 브라우저 창을 최대로 키움
  • browser.find_element(By.XPATH, '//button[text() =”텍스트"]')
  • ㄴ // : html 전체중에서 찾겠다는 의미
    ㄴ button 중에서 text 가 텍스트인 element 찾음.
  • browser.find_element(By.XPATH, '//i[contains(text(), "제주국제공항")]')
    ㄴ i 중에서 text에 제주국제공항을 포함하는 element 찾음
  • browser.find_element(By.XPATH, '//div[@class="btns"]/button[1]')
    ㄴ div 중에 class 속성이 btns 인 값을 찾음 > 하위의 두번째 button element 찾음.
  • WebDriverWait(browser,n).until(EC.presence_of_element_located((by, value)))
    ㄴ n초만큼 대기(시간이 지나면 에러발생)
    ㄴ until 안의 element발견 시, 남은 시간을 무시하고 다음문장 시작.

'python > python_selenium' 카테고리의 다른 글

Headless 크롬  (0) 2023.04.29
Selenium 활용2  (0) 2023.04.29
Selenium 심화  (0) 2023.04.25
Selenium 기본  (0) 2023.04.25
CSV 기본  (0) 2023.04.23
'python/python_selenium' 카테고리의 다른 글
  • Headless 크롬
  • Selenium 활용2
  • Selenium 심화
  • Selenium 기본
몽자비루
몽자비루
코딩공부 정리용 블로그입니다.
  • 몽자비루
    공부하는 블로그
    몽자비루
  • 전체
    오늘
    어제
    • 분류 전체보기 (170)
      • python (30)
        • python_selenium (16)
        • python_pygame (3)
      • appium (0)
      • 쿠버네티스 (60)
        • linux (8)
        • shell programming (8)
        • docker (18)
        • cka (23)
      • postman&API (16)
      • QA성장하기 (30)
        • 개발자에서 아키텍트로 스터디 (6)
        • 소프트웨어 공학 이해도 높이기 (6)
        • 테스팅 전문 지식 쌓기 (18)
      • 에러일기 (1)
      • Server&load (32)
        • AWS (27)
        • Jmeter (0)
        • load test (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    사드웨어리소스
    로스트아크api
    스터디
    테스트 결과보고서
    포스트맨
    .cpu
    앱공존성
    QAKOREA
    공존성테스트
    테스트 계획서
    postman
    로스트아크
    qa
    python
    테스트 계획서 만들어보기
    API
    네트워크 테스트
    linux
    application log
    k8s
    쿠버네티스
    e2c
    리눅스
    LOSTARK
    애플리케이션로그
    cka
    vi에디터
    개발자에서아키텍트로
    테스트스크립트
    도커
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
몽자비루
Selenium 활용1
상단으로

티스토리툴바