1. 程式人生 > >Selenium-python——異常(selenium.common.exceptions.StaleElementReferenceException: Message: stale eleme)

Selenium-python——異常(selenium.common.exceptions.StaleElementReferenceException: Message: stale eleme)

1、我在第一個頁面獲取到了訪問下一頁的連結一共80條,然後迴圈獲取八十條連結,並迴圈開啟。報了這個錯誤。程式碼如下

from selenium import webdriver
import time
import random


driver =  webdriver.Chrome()
driver.get("http://www.*******.com")
timesleep = random.randint(2,5)
time.sleep(timesleep)
href = driver.find_elements_by_xpath("//a[@class='titlink']")
print(len(href)) for index,i in enumerate(href): hre = i.get_attribute("href") print(hre) print("@"*30) # # 建立一個新視窗 driver.execute_script('window.open()') driver.switch_to_window(driver.window_handles[1]) driver.get(hre) time.sleep(timesleep) print('123') # driver.close()

之後這樣就報錯了
問題出在我進入了一個新的頁面,無法獲取上一頁面的內容
2、解決方法:可以開啟第一層頁面,然後在第一層獲取所有的連結。並儲存(可以儲存為列表,或檔案等),然後迴圈該列表,獲取網址並進行開啟。

from selenium import webdriver
import time
import random
driver =  webdriver.Chrome()
driver.get("http://www1.xcar.com.cn/bbs/forumdisplay.php?fid=160&page=1")
timesleep = random.randint(2,5
) time.sleep(timesleep) href = driver.find_elements_by_xpath("//a[@class='titlink']") print(len(href)) list1 = [] for index,i in enumerate(href): hre = i.get_attribute("href") print(hre) list1.append(hre) for j in list1: driver.get(j)