[Selenium] 데이터 스크래핑-no such element 에러

Loopy·2022년 3월 17일
1

삽질기록

목록 보기
14/28
post-thumbnail
post-custom-banner

👉 티켓 투게더 개발 과정에서, 인터파크 사이트에서 내가 예매한 공연들의 정보를 크롤링 해오는 과정속에서 발생한 에러들을 기록하였다.

☁️ 문제 발생

로그인 창으로 넘어간 후, 아이디와 비밀번호 요소를 찾아서 데이터를 입력하려고 시도하였는데 계속 아래와 같이 요소를 찾을 수 없다는 에러가 발생하였다.

#로그인 페이지 이동
driver.find_element(By.ID, "aLogin").click()

#아이디, 비밀번호 입력
login = driver.find_element(By.ID, "userId")
login.click()
pyperclip.copy("sksmsrkdtpal")
pyautogui.hotkey("ctrl", "v")
time.sleep(2)

pw = driver.find_element(By.ID, "userPwd")
pw.click()
pyperclip.copy("jjhlove1!")
pyautogui.hotkey("ctrl", "v")

selenium.common.exception.NoSuchElementException: Message: no such element: Unable to locate element: {"method" :"css selector", "selector":"[id="userId"]"}

분명히 잘 가져왔는데 계속 찾을 수 없다 뜨니 사이트 html을 하나하나 꼼꼼히 분석해보기로 했다.

☁️ 해결 방안

로그인이 포함된 부분의 가장 상위 요소를 보니, iframe이라는 것을 발견하였고 iframe 을 통해 또 다른 주소로 이동하고 있는 것을 볼 수 있었다.

🔖 iframe
HTML iframe이란 inline frame의 약자로, 웹 페이지안에 또 다른 웹페이지를 삽입하는 것을 의미

따라서 먼저 해당 frame으로 이동 후, 요소들을 찾아주었더니 아이디와 비밀번호 자동 입력에 성공하였다!

#해당 프레임으로 이동
driver.switch_to.frame(driver.find_element(By.XPATH, "//*[@id='loginAllWrap']/div[2]/iframe"))

참고 자료
https://scribblinganything.tistory.com/220

profile
개인용으로 공부하는 공간입니다. 잘못된 부분은 피드백 부탁드립니다!
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 10월 10일

이 글 덕분에 오류 해결했습니다. 감사합니다 ㅠㅠ

답글 달기