셀레니움(selenium)

셀레니움의 요소 클릭하는 법 (with python)

유니네 라이브러리 2024. 5. 2. 23:20

웹 자동화를 할 때 특정 요소를 클릭해야 하는 경우가 많다.

예를 들어,

  • 버튼을 눌러 페이지를 전환할 때
  • 팝업을 닫을 때
  • 특정 메뉴를 클릭하여 데이터를 불러올 때

이때 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()