입력창(input
태그의 form)에 키보드 입력을 진행하는 것을 목표로 할때, 키보드 입력은 크게 다음과 같은 과정을 거칩니다.
find_element()
이용)send_keys_to_element
를 통해 전달합니다..perform()
을 통해 동작합니다.
id
가 textInput인 요소에 "abc"를 입력하는 코드입니다.text_input = driver.find_element(By.ID, "textInput") ActionChains(driver).send_keys_to_element(text_input, "abc").perform()
- 먼저 스크래핑에 필요한 라이브러리를 불러옵니다.
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
driver
를 이용해 해당 사이트에 요청을 보냅니다.import time driver = webdriver.Chrome(service = Service(ChromeDriverManager().install())) driver.get("https://hashcode.co.kr/") time.sleep(1)
- 내비게이션 바에서 "로그인" 버튼을 찾아 마우스 이벤트를 실행합니다.
button = driver.find_element(By.CLASS_NAME,"nav-link.nav-signin") ActionChains(driver).click(button).perform() time.sleep(1)
- 아이디
input
요소를 찾아 아이디를 입력해 키보드 이벤트를 실행합니다.id_input = driver.find_element(By.NAME, "email") ActionChains(driver).send_keys_to_element(id_input,"your_id").perform() time.sleep(1)
- 패스워드
input
요소를 찾아 비밀번호를 입력해 키보드 이벤트를 실행합니다.pw_input = driver.find_element(By.XPATH, '//*[@id="main-app-account"]/div/div[2]/div/div[2]/div[1]/div/div[2]/div[4]/input') ActionChains(driver).send_keys_to_element(pw_input,"your_pw").perform() time.sleep(1)
- 로그인 버튼을 눌러서 로그인을 완료합니다.
button = driver.find_element(By.XPATH,'//*[@id="main-app-account"]/div/div[2]/div/div[2]/div[1]/div/div[2]/button') ActionChains(driver).click(button).perform() time.sleep(1)