Selenium - 根据 class 标签查找 id

Selenium - find id based on class tag

我想用 Selenium (python) 找到一个基于 class 标签的 id

我想查找 html 表格的结果。有 2 个可能的结果,可用或不可用。 这两个选项都会出现在 html 代码中,但是会使用两种不同的 CSS 格式来显示结果并隐藏另一个选项。

我想根据 div class “内容警告”(这是结果)、“隐藏的内容警告”获取 ID(“WarningDisponible”或“WarningIndisponible”) " 不是结果。

这个网站应该有帮助:https://selenium-python.readthedocs.io/locating-elements.html 先用 ContentWarning = driver.find_element_by_class_name('Content Warning') 搜索 div 从那里您可以通过检查 ContentWarning.find_element_by_id('WarningDisponible') returns 是否有任何结果来在 div 中搜索。

这确实假设 HTML 中没有其他元素 class 名称 'Content Warning' 除了您要查找的 div 之外。

打印 id 属性的值,即 WarningIndisponible 基于 classname Content warning 您可以使用以下任一项 :

  • 使用css_selector:

    print(driver.find_element(By.CSS_SELECTOR, "div.Content.warning > p").get_attribute("id"))
    
  • 使用xpath:

    print(driver.find_element(By.XPATH, "//div[@class='Content warning']/p").get_attribute("id"))
    

理想情况下,您需要为 引入 您可以使用以下任一项 :

  • 使用CSS_SELECTOR:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.Content.warning > p"))).get_attribute("id"))
    
  • 使用XPATH:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='Content warning']/p"))).get_attribute("id"))
    
  • 注意:您必须添加以下导入:

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

另一种简单的方法是给出完整的xpath。这样就可以避免混淆

Select(driver.find_element(by=By.XPATH,value='your_complete_xpath')

然后根据您的需要 send_keys()select_by_value("your_value_here")