[Selenium] 셀레니움 다뤄보기 - 3 (마우스, 키보드 이벤트)

2024. 10. 4. 17:24·크롤링, 스크래핑, 시각화/Selenium

최대한 오늘 공부한 내용은 오늘 정리해야, 나중에 제 블로그를 다시 보면서 복습할 때 도움이 되지 않을까 싶어서 많이 작성하게 되네요 ㅋㅋㅋ..

 

오늘 알아볼 내용은 셀레니움의 마우스, 키보드 이벤트입니다!

 

간단한 설명과 실습으로 진행하도록 하겠습니다!!

 

마우스, 키보드 이벤트?

마우스, 키보드 이벤트는 말 그대로 마우스, 키보드를 사용하는 것처럼 selenium을 통해 마우스, 키보드로 발생시킬 수 있는 이벤트를 보내는 작업 입니다!

 

순서는 

  1. 이벤트를 발생시키고자 하는 요소 찾기!
    -> 이전 포스팅의 요소 추출을 참고하시면 좋아요! (https://jh-codingdiary.tistory.com/35)
  2. 이벤트를 발생시키고자 하는 내용을 특정 메소드를 통해 전달!
    -> 메소드에 대한 설명은 하단 링크에서 확인하실 수 있습니다!
    마우스 : https://www.selenium.dev/documentation/webdriver/actions_api/mouse/
    키보드 : https://www.selenium.dev/documentation/webdriver/actions_api/keyboard/
  3. .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] 셀레니움 설치 방법  (1) 2024.10.04
'크롤링, 스크래핑, 시각화/Selenium' 카테고리의 다른 글
  • [Selenium] 셀레니움 다뤄보기 - 2 (wait, XPATH)
  • [Selenium] 셀레니움 다뤄보기 - 1 (By, 요초 추출)
  • [Selenium] 셀레니움 설치 방법
김줘
김줘
김줘와 같이 데이터, 컴퓨터, IT 공부
  • 김줘
    초보개발자 김줘의 코딩일기
    김줘
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 데이터 엔지니어링 데브코스
      • 데이터
        • Airflow
        • Spark
        • Kafka
        • dbt
      • TroubleShooting
      • Docker
      • AWS
      • 크롤링, 스크래핑, 시각화
        • Selenium
        • 시각화
      • 코딩테스트
        • 프로그래머스
        • 입출력과 사칙연산
        • 정렬
      • Django
      • 자바 공부
      • 끄적끄적
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자바
    aws
    데이터 엔지니어링 데브코스 4기
    티스토리챌린지
    Python
    프로그래밍
    오블완
    초보개발자
    Airflow
    Java
    파이썬
    cloud
    TiL
    데이터 엔지니어
    프로그래머스
    데브코스
    Azure
    데이터 엔지니어링 데브코스
    에어플로우
    부트캠프
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
김줘
[Selenium] 셀레니움 다뤄보기 - 3 (마우스, 키보드 이벤트)
상단으로

티스토리툴바