xpath通常有两种定位方式:1、绝对路径定位 2、相对路径定位
我们最长用的就是相对路径定位。
相对路径定位又分为一下几种:
以百度输入框为例:
分别是相对路径+索引/属性/通配符/部分属性定位方法,大家可以粘贴到代码中运行试下然后根据写的描述理解。
# 相对路径+索引定位 //form/span[1]/input[1]
# driver.find_element(By.XPATH , "//form/span[1]/input[1]").send_keys("通过相对路径+索引的方式定位")
# 相对路径+属性定位 //input[@autocomplete="off"] 在input中呼叫一个唯一的属性autocomplete
# driver.find_element(By.XPATH, "//input[@autocomplete='off']").send_keys("通过相对路径+属性的方式定位")
# 相对路径+通配符定位 //*[@id='kw'] 全局搜索,只要我们属性中有id=kw 也就是复制xpath的方式但是复制经常会出错
# driver.find_element(By.XPATH, "//*[@id='kw']").send_keys("通过相对路径+通配符的方式定位")
# 相对路径+部分属性定位之starts-with以什么开头 //*[starts-with(@id,'k')] 匹配所有元素未id 值为k开头的
# 相对路径+部分属性定位substring截取什么(以什么结尾)//*[substring(@autocomplete,3)='f'] 截取元素autocomplete属性从第三个字符开始
# 相对路径+部分属性定位之contains 包含什么 //*[contains(@autocomplete,"ff")]
# driver.find_element(By.XPATH, "//*[starts-with(@id,'k')]").send_keys("相对路径+部分属性定位方式")
# driver.find_element(By.XPATH, "//*[substring(@autocomplete,3)='f']").send_keys("相对路径+部分属性定位方式之截取")
# driver.find_element(By.XPATH, "//*[contains(@autocomplete,'ff')]").send_keys("相对路径+部分属性之包含")