👉 티켓 투게더 개발 과정에서, 인터파크 사이트에서 내가 예매한 공연들의 정보를 크롤링 해오는 과정속에서 발생한 에러들을 기록하였다.
로그인 창으로 넘어간 후, 아이디와 비밀번호 요소를 찾아서 데이터를 입력하려고 시도하였는데 계속 아래와 같이 요소를 찾을 수 없다는 에러가 발생하였다.
#로그인 페이지 이동
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"))
이 글 덕분에 오류 해결했습니다. 감사합니다 ㅠㅠ