본문 바로가기
파이썬 공부

[Python] 파이썬 Selenium 자주 검색하는 10가지 질문 ! selenium FAQ

by 파이썬코딩대학 2024. 11. 8.

셀레니움 그게 뭔데 대체?

웹 사이트 크롤링을 할 때 사용하는 라이브러리입니다.

Selenium Github 들어가보시면

python 뿐만 아니라 java, C, C#, javascript, ruby 다양한 언어에서 웹사이트 자동화를 할 수 있게 도와주는 라이브러리입니다.

<Github 링크>

https://github.com/SeleniumHQ/selenium

 

GitHub - SeleniumHQ/selenium: A browser automation framework and ecosystem.

A browser automation framework and ecosystem. Contribute to SeleniumHQ/selenium development by creating an account on GitHub.

github.com

 

 

1. Selenium과 웹드라이버는 무엇인가요?

답변: Selenium은 브라우저를 자동화하는 도구로, 웹 애플리케이션 테스트와 데이터 스크래핑 등에 사용됩니다. 웹드라이버는 Selenium과 브라우저 간의 소통을 돕는 프로그램입니다. ChromeDriver, GeckoDriver(Firefox) 등이 있으며, 각 브라우저에 맞는 드라이버를 사용해야 합니다.

2. 웹드라이버는 어디서 다운로드하나요?

답변: 각 브라우저의 웹드라이버는 다음 링크에서 다운로드할 수 있습니다.

3. 웹 요소를 찾는 방법에는 어떤 것들이 있나요?

답변: Selenium에서는 다양한 방법으로 요소를 찾을 수 있습니다. 주요 메서드는 다음과 같습니다.

  • find_element_by_id('id')
  • find_element_by_name('name')
  • find_element_by_class_name('class')
  • find_element_by_tag_name('tag')
  • find_element_by_css_selector('selector')
  • find_element_by_xpath('xpath')

4. 웹 페이지가 로딩될 때까지 대기하는 방법은?

답변: implicitly_waitWebDriverWait 두 가지 방법이 있습니다.

  • implicitly_wait(time): 전역적으로 설정하며, 모든 요소가 로드될 때까지 지정한 시간만큼 기다립니다.
  • WebDriverWait: 특정 요소가 조건을 만족할 때까지 기다립니다.

예를 들어, WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'element_id')))은 요소가 나타날 때까지 10초까지 대기합니다.

5. Selenium이 특정 요소를 클릭하지 못할 때는 어떻게 하나요?

답변: 요소가 아직 로드되지 않았거나 가려져 있을 수 있습니다. 이럴 때는 WebDriverWait를 사용해 요소가 나타날 때까지 기다리거나, 자바스크립트를 통해 강제로 클릭할 수 있습니다.

from selenium.webdriver.common.action_chains import ActionChains
# JavaScript로 클릭하기
driver.execute_script("arguments[0].click();", element)

6. 브라우저 창을 숨기고 백그라운드에서 실행할 수 있나요?

답변: 가능합니다. headless 옵션을 사용하면 됩니다. 제가 직접 개발할때는 이거 안 하고 incognito로 시크릿모드로 개발했던것같습니다.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--headless")
driver = webdriver.Chrome(options=options)

7. Selenium으로 드래그 앤 드롭을 어떻게 하나요?

답변: ActionChains 모듈을 사용하면 드래그 앤 드롭을 할 수 있습니다.

from selenium.webdriver import ActionChains

source = driver.find_element_by_id("source")
target = driver.find_element_by_id("target")

action = ActionChains(driver)
action.drag_and_drop(source, target).perform()

8. 쿠키를 추가하거나 삭제하려면 어떻게 하나요?

답변: Selenium에서는 add_cookiedelete_cookie 메서드를 사용할 수 있습니다.

# 쿠키 추가
driver.add_cookie({"name": "cookie_name", "value": "cookie_value"})

# 쿠키 삭제
driver.delete_cookie("cookie_name")

9. 스크린샷을 캡처하는 방법은?

답변: save_screenshot 메서드를 사용해 스크린샷을 저장할 수 있습니다.

driver.save_screenshot("screenshot.png")

10. 페이지가 다 로드되기 전에 스크립트가 실행되는 문제 해결법은?

답변: WebDriverWait을 사용해 특정 요소가 나타날 때까지 기다리거나, 페이지가 완전히 로드된 후 스크립트를 실행하도록 설정할 수 있습니다. 근데 제 경험상 이 함수는 잘 안 썼고, 그냥 time.sleep(N)으로 기다리곤합니다.

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "element_id"))
)

이 FAQ가 Selenium 개발할때에 도움이 되길 바랍니다 ㅎㅎ

 

 

 

 

[Python] 파이썬 selenium example 예시 3개 (베이스 코드)

Selenium은 웹 브라우저를 자동화하는 강력한 도구로, 다양한 웹 테스트와 데이터 스크래핑 작업에 널리 사용됩니다. 이 글에서는 Python과 Selenium을 사용하여 웹 브라우저를 자동화하는 방법에 대

titan-weapon.tistory.com