상세 컨텐츠

본문 제목

파이썬 셀레니움 클릭 방법

코딩

by 땡감 2023. 5. 8. 10:51

본문

반응형

파이썬은 크롬 드라이버를 통해 웹페이지를 컨트롤 할 수 있다.

그 중 가장 빈번하게 사용되는 작업 중 하나가 특정 요소를 클릭하는 작업인데

오늘은 웹페이상의 특정 요소를 클릭하는 방법에 대해 알아보자.

 

첫번째로 가장 흔하게 사용되는 방법이다.

driver를 통해 요소를 찾고, 바로 click 메소드를 통해 클릭을 하는 방법이다.

소스도 직관적이고 간결해서 작성자도 가장 많이 사용하는 방법이다.

다만 해당 방법으로 요소 클릭을 시도하다보면 아래와 같은 오류가 발생할 수 있다.

Element Is Not Clickable at Point

해당 좌표에 클릭을 할 수 없다는 오류 메시지인데 이 오류는 두번째 클릭방법으로 해결할 수 있다.

물론 클릭하고자 하는 요소의 위치가 정확하다는 전제조건은 깔려있어야 한다.

 

두번째 방법은 자바스크립트를 이용하는 방법이다.

먼저 클릭하고자 하는 요소를 찾는건 동일하다.

다만 바로 클릭을 하는것이 아니라 변수에 담아 놓고

자바스크립트를 통해 클릭 함수를 호출하면서 해당 변수를 인자로 넘겨주는 방식이다.

두번째 방법으로 요소를 클릭하면 첫번째 방법으로 클릭했을 경우 발생하는 오류를 해결할 수 있다.

다만 소스가 한줄 길어지는것가 조금더 타이핑을 해야한다는 단점이 있지만

안정적인 제어를 위해서는 두번째 방법이 더 효과적이다.

 

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager


driver = None


# 크롬 실행
def execChrome():
    global driver
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
    driver.maximize_window()
    driver.get("https://www.naver.com/")


# 로그인
def click1():
    global driver
    driver.find_element(By.XPATH, '//*[@id="account"]/a').click()  # 로그인 버튼
    print("클릭방법1")


def click2():
    global driver
    login_btn = driver.find_element(By.XPATH, '//*[@id="account"]/a')
    driver.execute_script("arguments[0].click();", login_btn)  # 로그인 버튼 클릭
    print("클릭방법2")


execChrome()
click1()
#click2()
time.sleep(10)

직접 테스트를 해보고자 하는 이를 위해 테스트 코드 전체를 첨부한다.

비교적 간단한 구조의 웹페이지라면 첫번째 방법으로도 무리없겠지만

해상도까지 고려해야하는 웹페이지라면 두번째 방법으로 진행해야한다.

반응형

관련글 더보기

댓글 영역