【问题标题】:Driver unable to find element after click on angular link however the result shows in browser as well单击角度链接后驱动程序无法找到元素,但结果也显示在浏览器中
【发布时间】:2025-12-29 23:25:12
【问题描述】:

我在 Python Selenium 中遇到了 angular 站点 scraping 当我点击它的任何链接时显示异常 selenium.common.exceptions.NoSuchElementException,chrome 驱动程序显示结果进入驱动程序但是当我尝试查找结果中出现的任何元素 python selenium 显示异常。

driver.get("https://recruiting.adp.com/srccar/public/RTI.home?c=1153651&d=ExternalCareerSite&rb=ConstellisSite#/")
job_elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located(
                (By.XPATH, "//a[@class='jobtitle job-title-link']")))
job = job_elements[0]
job.click()
//after some wait when elements visible into driver
driver.find_element_by_xpath("//span[@class='jobTitle job-detail-title']").text

然后异常显示,所以我如何提取在 agular 中单击后出现的元素。 我们将不胜感激。

【问题讨论】:

  • 您的代码对我来说非常好。没有例外

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

你已经够近了。就像您在收集所需元素之前为 visibility_of_all_elements_located() 诱导 WebDriverWait 的方式一样,类似于提取文本 K-9 Handler (Boston/Part Time) 你有将WebDriverWait 诱导为visibility_of_element_located(),您可以使用以下任一Locator Strategies

  • 使用XPATHtext属性:

    driver.get('https://recruiting.adp.com/srccar/public/RTI.home?c=1153651&d=ExternalCareerSite&rb=ConstellisSite#/')
    job_elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//a[@class='jobtitle job-title-link']")))
    job_elements[0].click()
    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//span[@class='jobTitle job-detail-title']"))).text)
    
  • 使用CSS_SELECTORget_attribute() 方法:

    driver.get('https://recruiting.adp.com/srccar/public/RTI.home?c=1153651&d=ExternalCareerSite&rb=ConstellisSite#/')
    job_elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//a[@class='jobtitle job-title-link']")))
    job_elements[0].click()
    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span.jobTitle.job-detail-title"))).get_attribute("innerHTML"))
    
  • 控制台输出:

    K-9 Handler (Boston/Part Time)
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

参考文献

您可以在以下位置找到关于没有此类元素的几个相关讨论:

【讨论】:

  • 这仅适用于 Python 控制台,但在作为蜘蛛运行时不起作用。 :(
  • @Rana.Amir spider 是什么意思?我在您的问题中没有看到关于spider 的任何内容?您是否使用我的答案运行代码?可以告诉我状态吗?
  • 我的意思是当我使用命令(即scrapy crawl spider_name)将它作为 python scrapy 蜘蛛运行时,当我点击任何链接后它没有给我任何元素。