셀레니움 관련해서 질문드립니다
조회수 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()를 할 떄 오류가 생기는 듯합니다. 오류원인과 해결방법을 코드로 해주시면 정말 감사하겠습니다
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력