1. 오류
코드 중 게시판에서 다음 페이지로 넘어가는 것을 클릭하여 페이지 이동 후 미리 저장한 변수를 사용 했을 때 StaleElementReferenceException 오류가 발생 하였다... 처음에는 페이지 불러오기 전에 사용한 것만이 문제이줄 알았지만 , 그것과 미리 저장한 element 사용이 문제 였다.
def set_href_list(self):
# 페이지 1 -> 3 까지
page_num = 0
while page_num < 3:
self.page_list[page_num].send_keys('\n')
self.driver.implicitly_wait(5)
time.sleep(2)
if page_num <len(self.page_list):
# 문제 부분 self.thesis_list 는 페이지 이동전의 element를 저장한 리스트이다.
for thesis in self.thesis_list:
href = thesis.find_element(By.CLASS_NAME , 'thesis__link')
self.hrefs.append(href.get_attribute('href'))
page_num +=1
else:
break
2. 해결
def set_href_list(self):
page_num = 0
while page_num < 3:
time.sleep(2)
self.page_list[page_num].send_keys('\n')
time.sleep(2)
# 다시 가지고 온다..
self.page_list = self.driver.find_elements(By.CLASS_NAME , 'dpPaging__link')
if page_num <len(self.page_list):
# 다시 가지고 온다..
self.thesis_list = self.driver.find_elements(By.CLASS_NAME , 'thesis')
for thesis in self.thesis_list:
href = thesis.find_element(By.CLASS_NAME , 'thesis__link')
self.hrefs.append(href.get_attribute('href'))
page_num +=1
else:
break
3. 느낌점
다시 불러온다는 것이 매우 비효율적으로 느껴진다...
차리리 bs4를 사용할까 생각된다.