我试图点击这个页面上所有可能的课程链接,但它给了我这个错误:
Message: stale element reference: element is not attached to the page document
这是我的代码:
driver = webdriver.Chrome()
driver.get('https://catalog.maryville.edu/preview_program.php?catoid=18&poid=3085&_ga=2.22513656.232086776.1594848572-196623372.1594848572')
driver.implicitly_wait(10)
links = driver.find_elements_by_xpath('//*[@id="table_block_n2_and_content_wrapper"]/table/tbody/tr[2]/td[1]/table/tbody/tr/td/table/tbody/tr[2]/td/div/div/ul/li/span/a')
for link in links:
driver.execute_script("arguments[0].click();", link)
time.sleep(3)
driver.quit()
知道怎么解决这个问题吗?
点击页面上的所有课程链接https://catalog.maryville.edu/preview_program.php?catoid=18&poid=3085&_ga=2.22513656.232086776.1594848572-196623372.1594848572您可以使用以下定位器策略之一:
-
使用
CSS_SELECTOR
:driver.get("https://catalog.maryville.edu/preview_program.php?catoid=18&poid=3085&_ga=2.22513656.232086776.1594848572-196623372.1594848572") links = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "li.acalog-course>span>a"))) for link in links: link.click() time.sleep(3) driver.quit()
-
使用
XPATH
:driver.get("https://catalog.maryville.edu/preview_program.php?catoid=18&poid=3085&_ga=2.22513656.232086776.1594848572-196623372.1594848572") links = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//li[@class='acalog-course']/span/a"))) for link in links: link.click() time.sleep(3) driver.quit()
-
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
参考
您可以在以下位置找到关于StaleElementReferenceException的相关详细讨论:
- 使用Python迭代时出现StaleElementException
- 消息:过时的元素引用:元素未附加到Python中的页面文档