【问题标题】:Get XPath of element in Selenium [duplicate]获取 Selenium 中元素的 XPath [重复]
【发布时间】:2022-01-11 21:28:37
【问题描述】:

假设我按类名获取网页上的元素列表,如下所示:

driver.find_elements_by_class_name("something")

如何获取该列表中每个元素的 XPath?

注意:我不是在尝试使用 XPaths 查找元素。我已经有了上面代码中的元素。我只想要我已经找到的每个元素的 XPath。

【问题讨论】:

  • 为什么你需要一个 XPath 来为你已经找到的元素?你已经找到了……为什么还要再找呢?没有办法做你所要求的......
  • 所有提问者不提问,然后删除问题。有些是新手,在构建问题时需要帮助。
  • @undetectedSelenium 如果您认为问题不清楚,您应该提出澄清问题并让 OP 更新新信息。正如它目前所写的那样,我很确定我理解了这个问题,但我可能是错的......更清晰从来都不是一件坏事。

标签: python selenium xpath


【解决方案1】:

driver.find_element_by_*driver.find_elements_by_* 已弃用。 使用它的最佳方式是 @undetected-selenium 写的。

首先导入By

from selenium.webdriver.common.by import By

然后您可以将它与多种位置策略一起使用。

  • XPath
    driver.find_elements(By.XPATH, "//*[@attribute='something']")
    
  • CSS 选择器
    driver.find_elements(By.CSS_SELECTOR, "[attribute~=”value”]")
    

你应该从现在开始使用这个,因为最新的 webdrivers 出现错误是很常见的find_element_by_* commands are deprecated

【讨论】:

  • 当它没有添加与其他答案不同的任何内容时,为什么要将其添加为答案?此外,您需要更仔细地阅读问题。 OP 已经说明了他在寻找什么,而这不是它。
【解决方案2】:

WebElement 通过 classname 标识为 something 也可以使用以下Locator Strategies 标识:

  • xpath

    driver.find_elements(By.XPATH, "//*[@class='something']")
    
  • css 选择器

    driver.find_elements(By.CSS_SELECTOR, ".something")
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.common.by import By
    

【讨论】:

    【解决方案3】:

    您可以为您的浏览器安装 XPath Finder 扩展,并自动为每个元素生成唯一的 XPath。

    之后就可以使用函数了:

    driver.find_element_by_xpath("XPath string") .
    

    【讨论】:

    • OP 要求 XPaths 用于已找到的元素...浏览器扩展无法做到这一点。
    猜你喜欢
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多