1. 폼 요소와의 상호작용 도입
웹 페이지의 폼은 상호작용의 마법이 시작되는 곳이야. 폼을 마치 신비한 컨트롤 패널처럼 생각해봐. 사용자가 시스템과 상호작용할 수 있게 해주는 기회인 거지. 하지만 로봇 청소기에 명령을 내리는 대신 우리는 정보를 웹사이트에 제공하게 되는 거야.
텍스트 필드에 텍스트 입력하기
우선, Selenium이 텍스트 필드에 텍스트를 입력하게 해주는 방법에 대해 이야기해보자.
이건 send_keys()
메서드를 사용해서 이루어져. 한 단계씩 배워보자.
from selenium import webdriver
# 웹 드라이버 경로 설정, webdriver의 복사본 경로를 지정
driver = webdriver.Chrome(executable_path='path/to/chromedriver')
# 웹 페이지 열기
driver.get('http://example.com/login')
# 입력 필드 찾기 (예를 들어 id로) 및 텍스트 입력
username_field = driver.find_element_by_id('username')
username_field.send_keys('내_슈퍼_계정')
password_field = driver.find_element_by_id('password')
password_field.send_keys('내_슈퍼_비밀_비밀번호')
이 간단한 예제에서 우리는 페이지를 열어서 입력 필드를 ID
로 찾아.
그런 다음 send_keys()
메서드를 사용해서 우리의 필드에 텍스트를 전달하지.
맞아, 이건 마치 복사-붙여넣기처럼 간단하지만, 한 단계 더 나아간 거야!
텍스트 필드를 채우는 중요한 팁
만약 폼이 좀 이상하게 작동한다고 느껴진다면,
아마 입력 필드에 이미 텍스트가 들어있어서 그런 걸 수도 있어.
새로운 텍스트를 입력하기 전에 clear()
메서드를 사용해서
이전 텍스트를 삭제해줘야 해.
username_field.clear()
username_field.send_keys('새로운_값')
이 작은 팁 덕분에 불필요한 골칫거리도 줄일 수 있을 거야, 진짜로!
2. 버튼 클릭하기
이제 입력 필드를 채운 후에는 버튼을 눌러야겠지, 예를 들면 폼을 제출하는 거야.
Selenium에서는 이걸 click()
메서드로 할 수 있어.
이건 마치 '더 많은 밈 보기' 버튼을 클릭하는 것처럼, 프로그래밍 방식으로 할 수 있어.
# 버튼을 이름으로 찾고 클릭하기
login_button = driver.find_element_by_name('login')
login_button.click()
이렇게 하면 우리 Selenium 스크립트가 클릭 마스터가 돼! 이제 너는 버튼 '선택하기' 같은 게임의 버튼보다 더 많은 것을 클릭할 수 있어!
사용 사례
send_keys()
와 click()
메서드를 사용해서
등록 폼을 채우고 제출하는 예제를 살펴보자.
# 등록 페이지 열기
driver.get('http://example.com/register')
# 등록 폼 채우기
driver.find_element_by_id('first_name').send_keys('이반')
driver.find_element_by_id('last_name').send_keys('이바노프')
driver.find_element_by_id('email').send_keys('ivan@example.com')
driver.find_element_by_id('password').send_keys('최고비밀123')
# '등록하기' 버튼 클릭
register_button = driver.find_element_by_css_selector('.register-button')
register_button.click()
이 간단한 예제는 사이트에서 등록 절차를 어떻게 자동화할 수 있는지를 보여줘. 테스트 등록 폼 및 사용자 활동 시뮬레이션에 유용할 수 있어.
3. 까다로운 폼 처리
때로는 페이지가 장난을 치듯 날 괴롭히는 것 같아. 버튼을 클릭해도 아무 일이 일어나지 않거나, 심지어 페이지가 오류를 보여줄 수도 있어. 자주 발생하는 문제와 해결 방법을 몇 가지 알아보자.
동적 요소 처리
때로는 페이지 요소가 즉시 로드되지 않을 수 있지. 이런 경우, 스크립트는 요소가 로드되기 전에 상호작용하려고 시도할 수도 있어. 마치 냉장고에서 계란을 꺼내기도 전에 오믈렛을 만들려고 시도하는 것과 비슷해.
이런 상황을 피하려면 대기작업을 사용해야 해. Selenium은 요소가 사용할 수 있을 때까지 기다리게 해 줄 수 있어:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 요소가 클릭 가능해질 때까지 기다렸다가 클릭하기
register_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CSS_SELECTOR, '.register-button'))
)
register_button.click()
WebDriverWait
를 사용하여 요소가 조치를 취할 준비가 될 때까지 기다리도록 Selenium에 지시할 수 있어.
이건 스크립트의 안정성을 상당히 향상시켜줘.
보이지 않는 요소와의 상호작용
페이지의 일부 요소는 보이지 않을 수 있어 — 예를 들어, 숨겨진 버튼이나 필드 말이야. 이런 경우, 상호작용을 시도하면 오류가 발생할 수 있어. 그럴 때 JavaScript를 사용하여 요소를 보여줄 수 있어:
driver.execute_script("arguments[0].style.visibility='visible';", hidden_element)
hidden_element.click()
이 방법은 어떤 이유에서든 숨겨진 요소와 상호작용할 수 있게 해줘.
4. 실제 사용 예: 폼 자동화
이제 폼과 상호작용하는 방법을 알았으니, 이를 현실 세계에서 어떻게 사용할 수 있을지 상상해 보자.
네 상사가 매일 웹 폼을 통해 일일 보고서를 작성해야 한다고 결정했어. 그리고 너는 이 지루한 작업을 약간 자동화하고 싶을 거야. Selenium을 사용하면 매일 보고서 데이터를 자동으로 작성하고 제출하는 스크립트를 만들 수 있어.
보고서 자동화 예제
일일 보고서 폼이 있는 사이트가 있다고 상상해 보자. 이 폼에는 이름, 부서, 완료된 작업 보고서를 입력하는 필드가 포함되어 있어. 이것을 자동화해보자:
driver.get('http://example.com/daily_report')
# 보고서 폼 작성
driver.find_element_by_id('name').send_keys('안나 페트로바')
driver.find_element_by_id('department').send_keys('기술')
driver.find_element_by_id('report').send_keys('오늘 모든 버그를 수정했어요!')
# 폼 제출
submit_button = driver.find_element_by_id('submit')
submit_button.click()
이런 스크립트는 소중한 시간을 절약하고 사람의 실수를 줄이는 데 크게 도움이 돼. 하지만 복잡한 폼의 경우 각 단계를 테스트하고 가능한 오류를 고려해야 한다는 점을 항상 염두에 둬야 해.
자, 오늘 강의는 여기까지야! 오늘 우리는 필드에 텍스트를 입력하고 버튼을 클릭하는 방법을 배웠고, 이를 온라인 양식 시스템에서 사용할 수 있어. 이는 웹 페이지와의 상호작용을 자동화할 수 있는 놀라운 능력을 제공해 준다구!
Selenium으로 실험을 계속 진행하고, 브라우저를 진정한 자동화 머신으로 바꾸는 방법을 배우기 위해 계속 함께 해줘!
GO TO FULL VERSION