Ich erstelle ein Skript in Python, das eine Tabelle mit drei Spalten durchläuft. Ich habe eine Liste erstellt, in der jeder Link in der ersten Spalte in die Liste eingefügt wird. Und dann gehe ich durch. Beim Loopen klicke ich in den Link, drucke eine Anweisung aus, um sicherzustellen, dass sie tatsächlich in den Link geklickt hat, und gehe dann zur vorherigen Seite, um auf den nächsten Link zu klicken. Der Fehler, den ich bekomme, ist, dass meine Schleife zuerst die ersten zwei Links durchläuft und dann bekomme ich eine StaleElementReferenceException, wenn die Schleife die Links [page] .click() zum dritten Mal aufruft. Ich kann den HTML-Code nicht veröffentlichen, da die Site vertraulich ist.Web Crawlen einer Tabelle von Links
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
import traceback
# starting chrome browser
chrome_path = r"C:\Users\guaddavi\Downloads\chromedriver_win32 extract\chromedriver.exe"
browser = webdriver.Chrome(chrome_path)
#linking to page
browser.get('link to page with table ')
#find table of ETL Extracts
table_id = browser.find_element_by_id('sortable_table_id_0')
#print('found table')
#get all the rows of the table containing the links
rows = table_id.find_elements_by_tag_name('tr')
#remove the first row that has the header
del rows[0]
current = 0
links = [] * len(rows)
for row in rows:
col = row.find_elements_by_tag_name('td')[0]
links.append(col)
current +=1
page = 0
while(page <= len(rows)):
links[page].click()
print('clicked link' + " " + str(page))
page += 1
browser.back()