如何使用 selenium webdriver 获取没有 class 名称和 ID 的元素

How to get element which don't have a class name and a id using selenium webdriver

HTML:

<a title="ITC" href="javascript:void(0);" onclick="TPComView(&quot;2020-2021&quot;,&quot;39&quot;);">ITC</a>

我尝试使用 cssSelector 和 xpath,但它显示如下错误:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element

您可以使用find_element_by_xpath函数。

driver.find_element_by_xpath('//a[@href="'+url+'"]')

要定位元素,您可以使用 titleonclick or/and innerText 属性,也可以使用以下任一

  • 使用link_text:

    element = driver.find_element_by_link_text("ITC")
    
  • 使用css_selector:

    element = driver.find_element_by_css_selector("a[title='ITC'][onclick^='TPComView']")
    
  • 使用xpath:

    element = driver.find_element_by_xpath("//a[@title='ITC' and text()='ITC']")
    

理想情况下,要找到需要为 visibility_of_element_located() 引入 的元素,您可以使用以下任一方法 :

  • 使用LINK_TEXT:

    element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.LINK_TEXT, "ITC"))).click()
    
  • 使用CSS_SELECTOR:

    element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "a[title='ITC'][onclick^='TPComView']")))
    
  • 使用XPATH:

    element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//a[@title='ITC' and text()='ITC']")))
    
  • 注意:您必须添加以下导入:

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

参考资料

您可以在 中找到一些相关讨论: