XPath 使用路径表达式在XML 文档中选取节点。节点通过沿着路径或者step 来选取

1.xpath 结合属性定位

语法:
driver.find_element(By.XPATH,".//input[@id='kw]") #单个属性定位
driver.find_element(By.XPATH,".//input[@id='kw' and @name='wd']") #多个属性定位参数:
[]:表示要根据属性找元素
@:后边跟属性的key,表示要通过哪个属性定位
代码示例:
el1 = driver.find_element(By.XPATH,".//input[@id='kw']") #单个属性定位
print(el1)
el2 = driver.find_element(By.XPATH,".//input[@id='kw' and @name='wd']") #多个属性定位
print(el2)2.xpath文本定位

语法
el = driver.find_element(By.XPATH,".//a[text()='新闻']")参数:
[]:表示要根据属性找元素
text():获取文本(注意没有指定元素@)
代码示例:
el = driver.find_element(By.XPATH,".//a[text()='新闻']")3.xpath层级定位
有时候需要定位的属性没有像id,name,class 这种基本属性,但是相邻的标签中有,可以先定位到相邻标签,通过层级关系定位到想要的元素

语法:
el1 = driver.find_element(By.XPATH,".//form[@id='form']/span/input") #由上到下的层级关系
el2 = driver.find_element(By.XPATH,".//input[@class='s_ipt']/parent::span") #父子元素定位
el3 = driver.find_element(By.XPATH,".//input[@class='s_ipt']/preceding-sibling::span") #哥哥元素定位
el4 = driver.find_element(By.XPATH,".//input[@class='s_ipt']/following-sibling::span") #弟弟元素定位parent:选择 input 的 直接父元素 <span>。
preceding-sibling:选择 input 之前的同级 <span> 元素
foloowing-sibling:选择 input 之后的同级 <span> 元素
4.xpath索引定位

语法
el1 = driver.find_element(By.XPATH,".//div[@id='s-top-left']/a[1]") #根据索引选择标签
el2 = driver.find_element(By.XPATH,".//div[@id='s-top-left']/a[last()]") #最后一个标签
el3 = driver.find_element(By.XPATH,".//div[@id='s-top-left']/a[last()-1]") #倒数第二个标签5.xpath模糊匹配

语法:
el1 = driver.find_element(By.XPATH,".//span[starts-with(@class,'bg s_ipt')]") #匹配开头
# el2 = driver.find_element(By.XPATH,'.//span[ends-with(@class,'']') #很少用
el3 = driver.find_element(By.XPATH,".//input[contains(@value,'百度一下')]")