我正试图通过将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