簡體   English   中英

如何處理 Python Selenium 中的“消息:過時的元素引用:元素未附加到頁面文檔”

[英]How do I deal with "Message: stale element reference: element is not attached to the page document" in Python Selenium

我正在編寫一個腳本來從網站上抓取產品名稱,按品牌過濾。 某些搜索結果可能包含多個頁面,這就是問題所在。我能夠抓取第一頁,但是當腳本單擊下一頁時,錯誤消息selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document顯示。 下面是我的代碼:

def scrape():
   resultList = []
   currentPage = 1

   while currentPage <= 2:
      titleResults = WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, 'h4.mt-0')))
      resultList.append(titleResults)
      checkNextPage = WebDriverWait(driver, 30).until(EC.visibility_of_all_elements_located((By.XPATH, "//div/nav/ul/li/a[@aria-label='Next']")))
      for cnp in checkNextPage:
         nextPageNumber = int(cnp.get_attribute("data-page"))
      currentPage += 1
      driver.find_element_by_xpath("//div/nav/ul/li/a[@aria-label='Next']").click()
   for result in resultList[0]:
      print("Result: {}".format(result.text))

我認為錯誤是在調用.click()時觸發的。 在求助於在此處發布此問題之前,我在 inte.net 上進行了大量搜索,因為要么我不理解其他文章/帖子的解決方案,要么它們不適用於我的情況。

Stale Element 表示舊元素或不再可用的元素。

我認為錯誤是由最后一行引起的。

您應該在元素變得不可用之前提取元素文本。

def scrape():
   resultList = []
   currentPage = 1

   while currentPage <= 2:
      titleResults = WebDriverWait(driver, 
10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, 'h4.mt-0')))

      // Extract elements text 
      results_text = [titleResults[i].text for i in range(0, len(titleResults))]
      resultList.extend(results_text)

      checkNextPage = WebDriverWait(driver, 30).until(EC.visibility_of_all_elements_located((By.XPATH, "//div/nav/ul/li/a[@aria-label='Next']")))
      for cnp in checkNextPage:
         nextPageNumber = int(cnp.get_attribute("data-page"))
      currentPage += 1
      driver.find_element_by_xpath("//div/nav/ul/li/a[@aria-label='Next']").click()


  print("Result: {}".format(resultList))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM