웹 자동화를 할 때 특정 요소를 클릭해야 하는 경우가 많다.
예를 들어,
- 버튼을 눌러 페이지를 전환할 때
- 팝업을 닫을 때
- 특정 메뉴를 클릭하여 데이터를 불러올 때
이때 Selenium(셀레니움)을 사용하면 다양한 방법으로 요소를 클릭할 수 있다.
이번에는 셀레니움에서 요소를 클릭하는 3가지 방법을 정리해 본다.
1. Selenium에서 요소를 클릭하는 3가지 방법
Selenium에서는 요소를 클릭하는 방법이 다음과 같이 세 가지가 있다.
클릭 방법 | 사용법 | 특징 |
.click() | element.click() | 일반적인 버튼 클릭에 사용 가능 |
send_keys(Keys.ENTER) | element.send_keys(Keys.ENTER) | 키보드 Enter 키 입력을 활용 |
execute_script() | driver.execute_script("arguments[0].click();", element) | JavaScript 실행을 통해 클릭 |
각각의 방법을 코드 예제와 함께 살펴본다.
2. click()을 사용한 클릭 방법
click() 메서드는 일반적인 버튼이나 링크 클릭에 사용된다.
하지만 클릭 대상이 명확하지 않거나 화면에 가려진 경우 동작하지 않을 수 있다.
✔ click() 메서드 사용 예시
#네이버 쇼핑 메인 호출하기
url='https://shopping.naver.com/home'
driver.get(url)
#기본 레이어 닫기 클릭하기
link_selector = '//*[@id="gnb-header"]/div[4]/div/div/button[2]'
mylink = driver.find_element(By.CSS_SELECTOR,link_selector)
mylink.click()
✅ click()을 사용할 때 주의할 점
- 화면에 보이지 않는 요소에는 동작하지 않을 수 있음
- 다른 요소가 겹쳐 있는 경우 오류 발생 가능
- 버튼과 같은 명확한 요소에 사용할 때 가장 적합
🔗 관련 문서: Selenium click() 공식 문서
Interacting with web elements
A high-level instruction set for manipulating form controls.
www.selenium.dev
3. send_keys(Keys.ENTER)를 사용한 클릭 방법
일부 버튼이나 링크는 Enter 키 입력을 통해 클릭할 수도 있다.
이 방법은 click()이 동작하지 않을 때 유용할 수 있다.
✔ send_keys(Keys.ENTER) 사용 예시
#네이버 쇼핑 메인 호출하기
url='https://shopping.naver.com/home'
driver.get(url)
#기본 레이어에 있는 닫기 클릭하기
link_selector = '//*[@id="gnb-header"]/div[4]/div/div/button[2]'
#클릭버튼 실행한다.
driver.find_element(By.CSS_SELECTOR,link_selector).send_keys(Keys.ENTER)
✅ send_keys(Keys.ENTER)를 사용할 때 주의할 점
- 클릭이 아니라 Enter 키를 눌러 실행하는 방식
- 일부 요소에서는 동작하지 않을 수도 있음
🔗 관련 문서: Selenium send_keys() 공식 문서
Interacting with web elements
A high-level instruction set for manipulating form controls.
www.selenium.dev
4. execute_script()를 사용한 JavaScript 클릭 방법
execute_script()를 사용하면 JavaScript를 직접 실행하여 클릭 이벤트를 발생시킬 수 있다.
이 방법은 click()이나 send_keys(Keys.ENTER)가 동작하지 않을 때 유용하다.
✔ JavaScript를 활용한 클릭 예시
#네이버 쇼핑 메인 호출하기
url='https://shopping.naver.com/home'
driver.get(url)
#기본 레이어 닫기 클릭하기
link_selector = '//*[@id="gnb-header"]/div[4]/div/div/button[2]'
mylink = driver.find_element(By.CSS_SELECTOR,link_selector)
#클릭버튼 실행하기
driver.execute_script("arguments[0].click();", mylink)
✅ execute_script()를 사용할 때 주의할 점
- JavaScript를 실행하기 때문에 강제 클릭이 가능
- 보이지 않는 요소도 클릭할 수 있음
- 하지만 너무 많은 JavaScript 실행은 브라우저 성능에 영향을 줄 수 있음
🔗 관련 문서: Selenium execute_script() 공식 문서
https://www.selenium.dev/documentation/webdriver/interactions/windows/
www.selenium.dev
5. 각 방법별 차이점 비교
클릭 방법 | 장점 | 단점 |
.click() | 가장 일반적이고 안정적 | 요소가 화면에 없으면 오류 발생 가능 |
send_keys(Keys.ENTER) | 키보드 입력을 통한 클릭 가능 | 모든 요소에 적용되지는 않음 |
execute_script() | 강제로 클릭 가능 | 브라우저 성능에 영향을 줄 수 있음 |
📌 마무리
Selenium을 사용하여 요소를 클릭하는 방법에는 여러 가지가 있다.
일반적으로 .click()을 먼저 사용하고, 만약 동작하지 않는다면 send_keys(Keys.ENTER) 또는 execute_script()를 활용하는 것이 좋다.
💡 추천 활용 방법
• 일반적인 버튼 클릭: .click()
• Enter 키로 조작 가능한 경우: send_keys(Keys.ENTER)
• 클릭이 안 될 때 강제 클릭: execute_script()
'셀레니움(selenium)' 카테고리의 다른 글
셀레니움에서 네트워크 로그 추출 (with 파이썬) (0) | 2024.05.07 |
---|---|
셀레니움으로 화면 스크롤 내려보자 (with 파이썬) (0) | 2024.05.04 |
셀레니움에서 find element 사용하기 (with python) (0) | 2024.04.29 |