이번 포스팅은 파이썬 웹자동화 세 번째 글로 셀레니움 화면 조작 방법 – 입력 및 클릭, 선택 등의 웹 요소 상호작용 방법에 대해 정리해보고 웹 자동검색 예시 코드까지 정리해볼 예정입니다.
앞선 포스팅에서는 셀레니움 find_element의 각 메서드에 대해서 상세히 정리해보고, 실질적으로 특정 웹페이지에서 셀레니움 find_element를 활용하여 웹 요소를 추출하는 방법에 대해 정리해보았습니다.
이번 포스팅에서는 이러한 셀레니움4의 find_element 메서드를 활용하여 추출한 웹 요소에 대한 상호작용(인터랙션) 방법, 대표적인 입력/클릭/선택 등의 셀레니움 화면조작 방법에 대해 정리해보려고 합니다.
기본적인 html코드를 예시로 해당 예시에 있는 텍스트 입력, 버튼 클릭, 옵션 체크 방법에 대해 알아보고, 실제 itmanual.net 웹페이지를 대상으로 자동 검색하는 예제까지 만들어볼 예정입니다.
셀레니움 화면조작 방법
우선 아래와 같은 html 예시를 가지고 셀레니움 화면조작 방법에 대해 텍스트 입력, 버튼 클릭, 옵션 체크 방법 순서대로 정리해보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <html> <head> <title>IT매뉴얼 : 웹페이지 자동화 (3) 셀레니움 웹요소 상호작용</title> </head> <body> <input type=“text” id=“username” name=“username” placeholder=“IT매뉴얼 텍스트 입력”> <button type=“submit” id=“submit-button”>제출하기</button> <select id=“itmanual-select”> <option value=“seoul”>IT매뉴얼1</option> <option value=“busan”>IT매뉴얼2</option> </select> </body> </html> |
위의 html 코드를 브라우저에서 실행하면 아래와 같이 나타납니다.
1. 웹 요소에 텍스트 입력하기
텍스트 입력 필드에 텍스트를 입력하려면 먼저 해당 요소를 찾아야 합니다. 이 예에서는 ID를 사용하여 텍스트 필드를 찾습니다.
아래 코드는 “username”이라는 ID를 가진 요소를 찾아 “ITMANUAL.NET”이라는 텍스트를 입력하는 예제입니다.
input_element = driver.find_element(By.ID, "username") input_element.send_keys("ITMANUAL.NET")
2. 웹 요소 클릭하기
우선 웹 페이지의 버튼을 클릭하는 방법을 알아보겠습니다. 버튼을 클릭하려면 먼저 해당 요소를 찾아야 합니다. 이 예에서는 ID를 사용하여 버튼을 찾습니다.
아래 코드는 “submit-button”이라는 ID를 가진 요소를 찾아 클릭하는 예제입니다.
from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("URL 주소") button = driver.find_element(By.ID, "submit-button") button.click()
3. 드롭다운 목록에서 옵션 선택하기
드롭다운 목록에서 특정 옵션을 선택하려면 Select 객체를 사용해야 합니다. 먼저 Select 객체를 만들고 원하는 옵션을 선택하겠습니다.
위 코드는 “itmanual-select”라는 ID를 가진 요소를 찾아 “seoul”을 선택하는 예제입니다.
from selenium.webdriver.support.ui import Select select_element = driver.find_element(By.ID, "itmanual-select") select_obj = Select(select_element) select_obj.select_by_value("seoul")
셀레니움 화면조작을 위해 사용된 주요 메서드를 다시 한번 정리하면 아래와 같습니다.
- driver.find_element(By.ID, “element_id”): 웹 페이지에서 ID를 기반으로 요소를 찾습니다.
- element.click(): 웹 요소를 클릭하는 메서드입니다.
- element.send_keys(“text”): 웹 요소에 텍스트를 입력하는 메서드입니다.
- Select(element): 드롭다운 목록과 상호작용하기 위한 Select 객체를 생성하는 메서드입니다.
- select_obj.select_by_value(“value”): Select 객체에서 value를 기반으로 옵션을 선택하는 메서드입니다.
특정 웹페이지 셀레니움 화면조작 – 자동 검색 방법
마지막으로 아래와 같이 셀레니움 화면조작을 통해 ITmanual.net 의 웹페이지에 있는 아래와 같은 포스팅 글 자동 검색 창에서 텍스트 상자에 “인공지능”을 입력하고 검색 버튼을 눌러 글을 자동 검색하는 코드를 예시로 만들어 보겠습니다.
우선 크롬 개발자도구(F12 버튼) 등을 통해 해당 페이지의 html 코드를 살펴보면 검색 텍스트 상자의 경우 class명이 “search-field”, 검색 버튼의 경우 class명이 “search-submit”인 것을 알 수 있습니다.
해당 검색 텍스트 상자에 “인공지능”을 입력하고 “검색 버튼”을 클릭하게 하기 위한 코드는 아래와 같습니다.
코드가 길어졌는데요, 사실 첫 번째 포스팅에서 다루었던 웹 드라이버 자동 설치와 브라우저 자동종료 방지 등의 코드가 추가되어 그렇습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | # Selenium 모듈에서 webdriver를 가져옵니다. from selenium import webdriver # Chrome 브라우저 옵션을 다루는 Options 클래스를 가져옵니다. from selenium.webdriver.chrome.options import Options # find_element를 사용합니다. from selenium.webdriver.common.by import By # Chrome 드라이버 서비스를 다루는 Service 클래스를 가져옵니다. from selenium.webdriver.chrome.service import Service # Chrome 드라이버를 다운로드하고 설치하는 데 사용되는 ChromeDriverManager를 가져옵니다. from webdriver_manager.chrome import ChromeDriverManager # Options 클래스의 인스턴스를 생성합니다. options = Options() # Chrome 브라우저 창이 즉시 닫히는 것을 방지합니다. options.add_experimental_option(‘detach’, True) # 불필요한 콘솔 메시지를 제거합니다. options.add_experimental_option(‘excludeSwitches’, [‘enable-logging’]) # Chrome 드라이버 서비스를 생성합니다. service = Service(ChromeDriverManager().install()) # Chrome 브라우저를 실행하는 ChromeDriver 객체를 생성합니다. driver = webdriver.Chrome(service=service, options=options) # Chrome 브라우저에서 https://itmanual.net 페이지를 로드합니다. driver.get(‘https://itmanual.net’) # 웹 페이지에서 클래스 이름이 “search-field”인 요소를 찾습니다. input_element = driver.find_element(By.CLASS_NAME, “search-field”) # 찾은 요소에 “인공지능” 텍스트를 입력합니다. input_element.send_keys(“인공지능”) # 웹 페이지에서 클래스 이름이 “search-submit”인 요소를 찾습니다. button = driver.find_element(By.CLASS_NAME, “search-submit”) # 찾은 요소를 클릭합니다. button.click() |
위와 같은 코드를 실행해보면 셀레니움 화면조작을 통해 아래와 같이 자동으로 itmanual.net에서 해당 검색 텍스트 상자에 “인공지능”을 입력하고 “검색 버튼”을 클릭하여 관련 게시물을 자동으로 찾아준 것을 확인할 수 있습니다.
이번 포스팅에서는 셀레니움 find_element 메서드를 활용하여 추출한 웹 요소에 대한 상호작용(인터랙션) 방법, 대표적인 입력/클릭/선택 등의 셀레니움 화면조작 방법에 대해 정리해보았습니다.
앞선 포스팅에서 다룬 파이썬 코딩 및 프로그래밍 관련 글은 아래와 같습니다.