셀레니움 관련해서 질문드립니다

조회수 458회

import MySQLdb import requests from selenium import webdriver from selenium.webdriver.remote.webelement import WebElement from selenium.webdriver.common.keys import Keys from selenium.webdriver import ActionChains from bs4 import BeautifulSoup from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By from selenium.common.exceptions import TimeoutException from selenium.common.exceptions import NoSuchElementException from selenium.common.exceptions import StaleElementReferenceException import time

conn=MySQLdb.connect( user="User", passwd="Test001", host="localhost", db="doctors" )

cursor=conn.cursor() cursor.execute("DROP TABLE IF EXISTS Dtable") cursor.execute("CREATE TABLE Dtable (Name text, Hosp text, Career text, Dep text, Field text)")

chrome_driver = webdriver.Chrome(r'C:\Users\99rac\OneDrive\문서\Downloads\chromedriver_win32\chromedriver.exe')

chrome_driver.implicitly_wait(5) chrome_driver.get('https://gs.severance.healthcare/gs/index.do') chrome_driver.find_element_by_partial_link_text("진료과").click() url=chrome_driver.current_url list=chrome_driver.find_elements_by_partial_link_text("심장")+chrome_driver.find_elements_by_partial_link_text("흉부")

for l in list:

l.click()
doctorlist=chrome_driver.find_elements_by_class_name("doctor-card-box")

for d in doctorlist:
    d.click()

    chrome_driver.find_element_by_partial_link_text("의료진소개").click()
    chrome_driver.switch_to.window(chrome_driver.window_handles[-1])
    name=chrome_driver.find_element_by_xpath("/html/body/div/div/div/article/div/div[1]/h2/strong")
    print(name.text)
    Hosp=chrome_driver.find_element_by_xpath("/html/body/div/div/div/header/div[1]/h1/a")
    print(Hosp.text)
    career=chrome_driver.find_element_by_xpath("/html/body/div/div/div/article/div/div[2]/div/div/dl[3]/dd")
    print(career.text)
    dep=chrome_driver.find_element_by_xpath("/html/body/div/div/div/article/div/div[1]/p")
    print(dep.text)
    field=chrome_driver.find_element_by_xpath("/html/body/div/div/div/article/div/div[1]/h2/span")
    print(field.text)

    #chrome_driver.find_element_by_partial_link_text("논문").click()
    #chrome_driver.switch_to.window(chrome_driver.window_handles[-1])
    #information=chrome_driver.find_elements_by_tag_name("tr")

    #for i in information:
        #element=i.find_element_by_class_name("alleft_td")
        #print(i.text)

    chrome_driver.close()
    chrome_driver.switch_to.window(chrome_driver.window_handles[0])

chrome_driver.get(url)

conn.commit() conn.close()

를 실행했을 때, StaleElementReferenceException: Message: stale element reference: element is not attached to the page document (Session info: chrome=91.0.4472.101) 에러가 뜹니다. 에러위치를 보면 l.click()에서 나는 듯합니다. 처음으로 for l in list에 진입했을 때는 l.click()이 제대로 작동합니다. 이후에 다시 "진료과"페이지로 돌아가서 l.click()를 할 떄 오류가 생기는 듯합니다. 오류원인과 해결방법을 코드로 해주시면 정말 감사하겠습니다

  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)