以下为使用Python Selenium实现XPath定位的代码示例:
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# ================== 基本定位 ==================
# 1. 标签名定位
driver.find_element("xpath", "//input")
# 2. 标签+单个属性定位
driver.find_element("xpath", "//input[@id='kw']")
# 3. 标签+多个属性组合
driver.find_element("xpath", "//input[@id='kw' and @name='wd']")
# 4. 文本定位
driver.find_element("xpath", "//a[text()='新闻']").click()
# 5. 模糊匹配定位
driver.find_element("xpath", "//a[contains(text(),'新')]")
# ================== 层级定位 ==================
# 层级关系定位
driver.find_element("xpath", "//span[@id='s_kw_wrap']//input")
# ================== 轴定位 ==================
# 1. parent父节点定位
driver.find_element("xpath", "//span[text()='设置']/parent::a")
# 2. ancestor祖先节点
driver.find_element("xpath", "//span[text()='高级搜索']/ancestor::div[@id='wrapper']")
# 3. following后续节点
driver.find_element("xpath", "//div[@id='s-top-left']/following::div[@id='s-top-right']")
# 4. preceding前方节点
driver.find_element("xpath", "//div[@id='s-top-right']/preceding::div[@id='s-top-left']")
# 5. following-sibling后续兄弟节点
driver.find_element("xpath", "//div[@id='s-top-left']/following-sibling::div[1]")
# 6. preceding-sibling前方兄弟节点
driver.find_element("xpath", "//div[@id='s-top-right']/preceding-sibling::div[1]")
# ================== 动态元素处理 ==================
# 处理动态ID
driver.find_element("xpath", "//div[starts-with(@id, 'test_')]")
driver.find_element("xpath", "//div[contains(@id, 'kw')]")
# 处理动态文本
driver.find_element("xpath", "//a[contains(text(), '部分文本')]")
sleep(3)
driver.quit()