如何使用SeleniumPython通过已知的src属性查找元素



我正试图通过将Selenium与python一起使用,通过src属性的已知值来查找元素。元素是谷歌地图中某个位置地址左侧的点图片。

也就是我试图选择的元素的html:

<img alt="" jstcache="935" src="//www.gstatic.com/images/icons/material/system_gm/1x/place_gm_blue_24dp.png" class="Liguzb" jsan="7.Liguzb,0.alt,8.src">

如何使用链接搜索给定元素:

www.gstatic.com/images/icons/material/system_gm/1x/place_gm_blue_24dp.png

谢谢。

要在src属性值已知的情况下定位元素,可以使用以下定位器策略之一:

  • 使用css_selector

    element = driver.find_element(By.CSS_SELECTOR, "img.Liguzb[src*='gstatic.com/images/icons/material/system_gm/1x/place_gm_blue_24dp']")
    
  • 使用xpath

    element = driver.find_element(By.XPATH, "//img[@class='Liguzb' and contains(@src, 'gstatic.com/images/icons/material/system_gm/1x/place_gm_blue_24dp')]")
    

要定位可见元素,而不是presence_of_element_located((,您需要诱导WebDriver等待可见_of_eelement_located

  • 使用CSS_SELECTOR

    element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "img.Liguzb[src*='gstatic.com/images/icons/material/system_gm/1x/place_gm_blue_24dp']")))
    
  • 使用XPATH:

    element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//img[@class='Liguzb' and contains(@src, 'gstatic.com/images/icons/material/system_gm/1x/place_gm_blue_24dp')]")))
    
  • 注意:您必须添加以下导入:

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

最新更新