- stale element reference: element is not attached to the page document
크롤링을 하던 중, 만나게 된 에러..😫😫
- stale element reference: ~ 해결 방법
에러를 분석해보니, 뒤로가기 후 다음 게시글을 클릭할 때 에러가 발생하였다.
for(int i = 101 ; i < total ; i++) {
List<WebElement> gets = driver.findElements(By.cssSelector(".bbs_tit a"));
for(int j = 0 ; j < gets.size() ; j++) {
gets.get(j).click();
// 크롤링 진행
System.out.println("===========================================");
System.out.println(cnt++ + "번째 완료");
System.out.println("===========================================");
driver.navigate().back(); // 뒤로가기
}
}
stale element reference(오래된 요소 참조)라는 말을 곰곰이 생각해보니, 리스트 형태의 gets가 뒤로가기 했을 때 유실된 것인가 싶었다. 그래서 뒤로가기 후 리스트의 값을 다시 초기화 해보았다.
for(int i = 101 ; i < total ; i++) {
List<WebElement> gets = driver.findElements(By.cssSelector(".bbs_tit a"));
for(int j = 0 ; j < gets.size() ; j++) {
gets.get(j).click();
// 크롤링 진행
System.out.println("===========================================");
System.out.println(cnt++ + "번째 완료");
System.out.println("===========================================");
driver.navigate().back(); // 뒤로가기
gets = driver.findElements(By.cssSelector(".bbs_tit a")); // List 초기화
}
}
에러가 해결이 되었다!🤩🤩
페이지에 들어갔다오면서 기존 리스트의 값은 쓰지 못하는 것이였나보다.