CodeGym /행동 /Python SELF KO /브라우저에서의 기본 동작

브라우저에서의 기본 동작

Python SELF KO
레벨 35 , 레슨 2
사용 가능

1. 웹 페이지 열기: 첫걸음

웹 페이지의 지배자가 되고 싶었던 적 있어? 그렇다면 이 강의가 바로 너를 위한거야. 오늘은 Selenium을 사용해 웹 페이지를 열고 그것들과 상호작용하는 방법을 배울거야. 마치 인터넷이라는 오케스트라와 Python 코드라는 악보로 브라우저를 지휘하는 지휘자가 된 것 같은 기분이 들 거야. 시작해 보자!

웹 페이지와 상호작용하기 전에, 우선 페이지를 열어야겠지? 마치 도서관에 가서 책을 찾기 전에 들어가야 하는 것처럼 말이야. Selenium에서는 브라우저 드라이버를 사용해 웹 페이지를 열 수 있어. 지금은 이미 Selenium과 적절한 웹 드라이버(예: ChromeDriver나 GeckoDriver)가 설치되어있다고 가정하고 진행할게. 이전 강의를 들었다면 이미 이 방법을 알고 있을 거야. 그렇지 않다면 돌아가서 다시 한번 읽어봐.

간단히 웹 페이지 여는 것부터 시작해 보자:

Python

from selenium import webdriver

# Chrome용 웹 드라이버 인스턴스 생성
driver = webdriver.Chrome()

# 웹 페이지 열기
driver.get('https://www.example.com')

# 페이지 제목을 콘솔에 출력
print(driver.title)

# 브라우저 닫기
driver.quit()

코드에서 일어나는 일:

  1. webdriver 임포트: Selenium의 핵심으로, 브라우저를 제어할 수 있게 해줘.
  2. 드라이버 생성: 여기서 Chrome용 드라이버 객체를 생성해. 이건 설치된 드라이버에 따라 다른 브라우저일 수 있어.
  3. 페이지 열기: get() 메서드는 지정된 URL의 페이지를 로드해.
  4. 페이지 제목 가져오기: driver.title을 사용하여 현재 페이지의 제목을 출력할 수 있어.
  5. 브라우저 닫기: quit() 메서드는 브라우저와의 작업을 종료해.

이제 첫 번째 웹 페이지를 열었어! 세상을 지배하기 위한 첫걸음... 음... 아니, 자동화를 위한 첫걸음이지!

2. 탐색 및 탭 작업

단순히 페이지를 열기만 해서는 부족하지. 종종 페이지 간 이동하거나 여러 탭을 열어야 해. 마치 여러 곳을 순간 이동할 수 있는 여행자처럼 말이야. Selenium에서는 가능해.

페이지 간 이동

한 페이지에서 다른 페이지로 넘어가는 것은 페이지를 여는 것만큼 간단해:

Python

# 다른 페이지로 이동
driver.get('https://www.example.org')

# back() 메서드를 사용하여 이전 페이지로 돌아가기
driver.back()

# forward() 메서드를 사용하여 앞으로 가기
driver.forward()

탭 작업

새 탭을 여는 건 어때? 이건 마치 여러 도시의 도서관에서 노트북을 사용하는 것 같지!

Python

# 새로운 탭을 열고 전환
driver.execute_script("window.open('https://www.example.com', '_blank');")
driver.switch_to.window(driver.window_handles[1])

# 첫 번째 탭으로 돌아가기
driver.switch_to.window(driver.window_handles[0])

설명:

  • execute_script(): 브라우저에서 JavaScript 코드를 실행하는 데 사용해. 여기서 새로운 탭을 열어.
  • switch_to.window(): 이 메서드는 탭 간 전환을 가능케 해줘. window_handles를 사용해 모든 열린 탭의 리스트에 접근해.

3. 웹 페이지와의 상호작용

이제 페이지를 열고 탐색하는 법을 배웠으니, 직접 상호작용하는 법을 배워보자 — 진정한 프로그래머처럼! 마치 각 웹 페이지와 춤을 추는 것처럼, 그리고 그것을 능숙하게 해내는 거야.

상호작용 인터페이스

예를 들어, 텍스트 입력 상자를 찾아서 텍스트를 입력하는 과정을 살펴보자:

Python

# 요소를 이름으로 찾기
search_box = driver.find_element_by_name('q')

# 찾은 텍스트 상자에 텍스트 입력
search_box.send_keys('Selenium Python')

# 검색 버튼을 찾아 클릭
submit_button = driver.find_element_by_name('btnK')
submit_button.click()

설명:

  • find_element_by_name(): 이름으로 요소를 찾는 데 사용하는 메서드야. 여기서는 검색 텍스트 상자를 찾아.
  • send_keys(): 찾은 요소에 텍스트를 입력할 수 있어.
  • click(): 요소를 클릭하는 동작을 시뮬레이션해, 예를 들어 버튼을 클릭하는 식으로.

추가 메서드

더 복잡한 요소 상호작용을 위해 다양한 메서드가 존재해. Selenium 문서를 살펴보면서 더 깊이 있는 공부를 해봐. 여기에선 몇 가지 기본적인 걸 다뤄 볼게.

  • find_element_by_id(): ID로 요소를 찾아.
  • find_element_by_class_name(): 클래스 이름으로 요소를 찾아.
  • find_element_by_css_selector(): CSS 선택자를 사용해 검색해.

이제 진정한 웹 탐험가처럼 페이지를 열고 탐험할 수 있어! 실험하고, 새로운 걸 시도해 보는 걸 두려워하지 마. "실수는 성공으로 가는 계단"이라고 하잖아, 특히 코드가 신뢰할 수 있고 잘 테스트된 경우에는 더더욱!

자주 하는 실수

Selenium과 작업하는 건, 기본적인 함정을 모르면 마치 지뢰밭을 걷는 것 같아. 가장 흔한 실수 중 하나는 브라우저 세션을 제대로 종료하지 않는 거야. 이러면 메모리에서 브라우저 프로세스가 멈춰버릴 수 있어. 스크립트의 끝에서 항상 driver.quit()를 사용해.

Selenium에서 프로그래머를 괴롭히는 다른 점은 웹 페이지 구조의 변경이야. 요소가 선택자로 발견됐는데, 웹사이트 개발자가 HTML 구조를 바꾸면, 스크립트가 갑자기 작동을 멈춰버릴 수 있어. 마치 방에 들어가려고 하는데 갑자기 문이 닫힌 것처럼. 유연한 코드를 작성하고, 사이트의 변경 사항에 맞게 정기적으로 업데이트하는 게 중요해.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION