Selenium를 하다보면 가장 많이 사용하는 동작이 Click입니다.
Click를 해야 다음 절차로 넘어갈 수 있기 때문에 꼭 필요한데요.
일반적으로는 click() 방법을 많이 사용하지만 가끔 의도치 않게 다양한 오류가 발생하여 동작이 실패하는 경우가 있습니다.
- selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted
- selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
그로 인해 다른 방법들을 대안으로 사용하였는데 Click이 필요할 때 사용했던 4가지를 소개하려고 합니다.
예시 코드의 element class_name은 네이버 홈 로그인 버튼으로 공통으로 통일되게 사용하였으며 언어는 파이썬을 선택하였습니다.
1. click()
아마 가장 많이 사용되는 방법으로 제 경험상 80% 이상은 해당 방법으로 문제 없이 Click 기능을 자동화 할 수 있습니다.
driver.find_element(By.CLASS_NAME, 'link_login').click()
2. send_keys(Keys.ENTER)
click()이 정상적으로 동작되지 않을 때 대안으로 가장 많이 사용하는 방식으로 click()과 send_keys(Keys.ENTER) 2가지 방법만 알아도 대부분의 element를 click할 수 있습니다.
driver.find_element(By.CLASS_NAME, 'link_login').send_keys(Keys.ENTER)
3. execute_script("arguments[0].click();")
javascript 코드를 통해 click를 하는 방식으로 코드가 1줄로 처리하기에는 길지만 해당 방식으로 click이 성공하는 경우도 있습니다.
element = driver.find_element(By.CLASS_NAME, 'link_login')
driver.execute_script("arguments[0].click();", element)
4. ActionChains().click().perform()
ActionChains 기능에 있는 click을 사용하는 방식입니다.
1번 방식과 동일한 이름의 click() 이지만 1번 방식에서 click 실패하는 경우에 해당 방식으로는 성공하는 케이스도 경험할 수 있었습니다.
clickable = driver.find_element(By.CLASS_NAME, 'link_login')
ActionChains(driver).click(clickable).perform()
저의 경우 Selenium을 사용하면서 위 4가지 방식이 모두 실패하는 경우는 발견하지 못했는데요.
해당 방식이 만약 있다면 다른 방식을 또 찾아서 공부해보는 것도 좋을거 같습니다.
Selenium을 공부하시는 모든 분들도 click에서 실패할 때 유용하게 사용하시길 바랍니다.
'자동화 > Selenium' 카테고리의 다른 글
Selenium 대기 방식 실행 시간 비교해보기 (Wait, Sleep) (0) | 2024.02.01 |
---|---|
지역 아파트 순위 자동화로 추출하여 엑셀에 저장하기 (With Python) (0) | 2023.03.23 |
네이버 메모에 짧은 내용 자동화로 작성해서 올리기 (0) | 2023.03.09 |
간단한 네이버 메일 자동화로 보내기 (With Selenium, Python) (0) | 2023.03.07 |
KFC 설문조사 실행파일로 자동화하여 스마트 코드 확인하기 (0) | 2023.02.27 |