一、绝对路径定位
/ 表示绝对路径,通过父子关系,一级一级往下定位标签。
以百度页面为例:
通过绝对路径 /html/body/div/div/div[5]/div/div/form/span/input 可以找到输入框
div[5]表示同一层级的第5个div标签。
二、相对路径定位
// 表示相对路径 相对路径会在所有标签中去定位符合条件的标签,而不用从最顶层开始,一级一级往下找。
相对路径需要利用属性来定位
同样以百度页面为例:
//input[@id='kw'] 同样可以找到输入框
1) @ 表示提取属性 在html中可以看到input元素中id属性值为 'kw'
2) 也可以使用其它属性 name、class都可以,但要确定根据这个属性定位到的元素是唯一的
3) 如果通过一个属性找到的元素不唯一,可以使用多个属性,需要在元素中间加and ,例如://input[@id='kw' and @name='wd']
4) 可以使用文本属性text()来定位
例如://a[text()='学术']
5) 如果当前元素没有能唯一识别的属性,可以先相对定位到父,再往下定位子元素
例如: //span[@id='s_kw_wrap']/input 一样是能定位到输入框
5) 模糊匹配
当属性的值只有部分是确定的时,就可以使用模糊匹配来定位
//a[contains(text(),'学术')] 匹配文本内容包含学术的a元素
//input[contains(@id,'kw')] 匹配id属性值包含kw的input元素
//*[starts-with(@id,'kw')] 匹配所有id属性值以kw开头的元素 (* 表示所有)