【问题标题】:How do I get to this element in Python Selenium我如何在 Python Selenium 中找到这个元素
【发布时间】:2020-11-30 20:03:00
【问题描述】:

我正在尝试使用 Python Selenium 选择此元素,但不知道如何选择,因为它不包含和 id/class name/etc..

这是 HTML:

<img src="/resource/1599091587000/nforce__SLDS0102/assets/icons/utility/chevrondown_60.png">

我试过了:

chrome_browser.find_element_by_xpath("//img[contains(text(),'/resource/1599091587000/nforce__SLDS0102/assets/icons/utility/chevrondown_60.png')]")

【问题讨论】:

  • 目标 src 属性...类似于:chrome_browser.find_element_by_xpath("//img[contains(@src,'chevrondown_60')]")
  • 要么分享 url,要么尝试自己打开 webdeveloper 工具(在 firefox 中按 F12),然后复制 css 选择器或 xpath,这应该可以工作
  • 您可以尝试使用周围元素(例如其父元素)来定位元素。周围的 HTML 是什么?它实际上可能比依赖 src 内容更可靠。

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

由于text() 会搜索 HTML 标记的内部文本,因此不应使用它来搜索此特定元素,因为 URL 位于 src 属性中。

您可以使用src 属性搜索它

//img[@src='/resource/1599091587000/nforce__SLDS0102/assets/icons/utility/chevrondown_60.png')]

或只是其中的一部分使用

//img[contains(@src,'chevrondown_60')]

【讨论】:

    【解决方案2】:

    该元素似乎是一个动态元素。因此,要定位元素,您可以使用以下任一Locator Strategies:

    • 使用css_selector:

      element = chrome_browser.find_element_by_css_selector("img[src^='/resource'][src$='assets/icons/utility/chevrondown_60.png']")
      
    • 使用xpath:

      element = chrome_browser.find_element_by_xpath("//img[starts-with(@src, '/resource') and contains(@src, 'assets/icons/utility/chevrondown_60.png')]")
      

    理想情况下,要定位您需要为WebDriverWait 诱导visibility_of_element_located() 的元素,您可以使用以下任一Locator Strategies:

    • 使用CSS_SELECTOR:

      element = WebDriverWait(chrome_browser, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "img[src^='/resource'][src$='assets/icons/utility/chevrondown_60.png']")))
      
    • 使用XPATH:

      element = WebDriverWait(chrome_browser, 20).until(EC.visibility_of_element_located((By.XPATH, "//img[starts-with(@src, '/resource') and contains(@src, 'assets/icons/utility/chevrondown_60.png')]")))
      
    • 注意:您必须添加以下导入:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      • 2020-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-22
      相关资源
      最近更新 更多