首页 > 解决方案 > 单击角度链接后驱动程序无法找到元素,但结果也显示在浏览器中

问题描述

我被困在 Python Selenium 中,angular当我点击它的任何链接时,当我点击它的任何链接时,它显示异常, chromeselenium.common.exceptions.NoSuchElementException驱动程序显示结果进入驱动程序,但是当我尝试找到结果中出现的任何元素时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 中单击后出现的元素。帮助将不胜感激。

标签: pythonseleniumxpathcss-selectorswebdriverwait

解决方案


你离得够近了。就像您在收集所需元素之前为visibility_of_all_elements_located()诱导WebDriverWait的方式一样,类似于提取文本K-9 处理程序(波士顿/兼职),您必须诱导WebDriverWait并且您可以使用以下任一定位器策略visibility_of_element_located()

  • 使用XPATH文本属性:

    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_SELECTOR方法get_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
    

参考

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


推荐阅读