최대한 오늘 공부한 내용은 오늘 정리해야, 나중에 제 블로그를 다시 보면서 복습할 때 도움이 되지 않을까 싶어서 많이 작성하게 되네요 ㅋㅋㅋ..
오늘 알아볼 내용은 셀레니움의 마우스, 키보드 이벤트입니다!
간단한 설명과 실습으로 진행하도록 하겠습니다!!
마우스, 키보드 이벤트?
마우스, 키보드 이벤트는 말 그대로 마우스, 키보드를 사용하는 것처럼 selenium을 통해 마우스, 키보드로 발생시킬 수 있는 이벤트를 보내는 작업 입니다!
순서는
- 이벤트를 발생시키고자 하는 요소 찾기!
-> 이전 포스팅의 요소 추출을 참고하시면 좋아요! (https://jh-codingdiary.tistory.com/35) - 이벤트를 발생시키고자 하는 내용을 특정 메소드를 통해 전달!
-> 메소드에 대한 설명은 하단 링크에서 확인하실 수 있습니다!
마우스 : https://www.selenium.dev/documentation/webdriver/actions_api/mouse/
키보드 : https://www.selenium.dev/documentation/webdriver/actions_api/keyboard/ - .perform()을 통해 동작시키기!
입니다.
그럼 간단하게 네이버 포탈에서 제 이름을 검색하는 코드를 작성해보겠습니다!
실습
# 1. 스크래핑에 필요한 라이브러리 불러오기
from selenium import webdriver
from selenium.webdriver import ActionChains
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.actions.action_builder import ActionBuilder
from selenium.webdriver import Keys, ActionChains
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
# 2. 웹 드라이버 초기화하기
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
# 3. 네이버 포탈 열기
driver.get('https://www.naver.com/')
time.sleep(1)
# 4. 검색창의 ID값을 이벤트 발생 요소로 설정
search_input = driver.find_element(By.ID, 'query')
# 5. search_input 요소에 '김줘'라는 값의 send_keys_to_element 이벤트를 발생시키고 perform!
ActionChains(driver).send_keys_to_element(search_input, '김줘').perform()
time.sleep(3)
# 6. 검색 버튼을 이벤트 발생 요소로 설정
button = driver.find_element(By.ID, 'search-btn')
# 7. 검색 버튼을 click하는 이벤트 발생시키고 perform!
ActionChains(driver).click(button).perform()
코드에 주석으로 설명이 되어있으니 한번 값에 변화를 주면서 따라해보시는 걸 추천합니다!
추가로 중간중간 sleep을 통해 대기 시간을 준 것은 바로바로 이벤트를 발생시키게 된다면 입력이 꼬여서 의도한 코드가 제대로 실행되지 않는 경우가 발생하기 때문입니다!
또한 앞선 예제처럼 연속적인 동작을 사용하기 위해서는 ActionChains를 사용하셔야 합니다!
ActionChains?
ActionChains는 셀레니움에서 마우스 및 키보드 작업을 시뮬레이션하는 데 사용되는 클래스로 복잡한 사용자 상호작용을 쉽게 구현하게 해준다!!
TMI
웹 사이트의 요소 속성이 변경이 되는 경우가 있어서 혹시라도 같은 사이트를 대상으로 하더라도 요소가 변경되었는지 확인하는 것이 좋을 것 같네요!!
'크롤링, 스크래핑, 시각화 > Selenium' 카테고리의 다른 글
[Selenium] 셀레니움 다뤄보기 - 2 (wait, XPATH) (0) | 2024.10.04 |
---|---|
[Selenium] 셀레니움 다뤄보기 - 1 (By, 요초 추출) (0) | 2024.10.04 |
[Selenium] 셀레니움 설치 방법 (0) | 2024.10.04 |