xpath定位
终极目标:找到唯一的一个元素
F12,在elements中,ctrl+f 可验证xpath表达式是否正确
以//开头, //标签名[@属性名=值]
*匹配所有
逻辑运算 使用 and 或者or
//*[@id="kw" and @name="wd" and @class="s_ipt"]
定位:
绝对定位
父/子 位置和继承关系 /html/body/div[2]/div[2]/div[5]/div[1]/div/form/span[1]/input
项目中不使用绝对定位,一旦元素变动,改动太大
相对定位
//*[@id="u_sp"]/a[2] a[2],从1开始(不是从0开始)
只关注页面中是否有符合我条件的元素,搜出条件,在啊html当中去找
通过元素的文本内容来定位
适用于:文本内容固定
语法------//标签名[text()=文本值]
例子-------//p[text()="平均出勤率"]
包含——属性/文本内容,包含一部分
语法-------contains(@属性/text(),被包含的内容)
例子-------//span[contains(@class,"quickdelete-wrap")] 代码:class="bg s_ipt_wr quickdelete-wrap"
轴定位:
使用场景:
以上所有定位都无法帮你找到元素
表格的情况下用的比较多
通过儿子找爸爸,找爷爷
通过兄弟找兄弟
轴定位--单斜杠
轴定位语法:
1、 ancestor————祖先节点,包括父
2、parent ——父节点
3、preceding——当前元素节点之前的所有节点(html页面先后顺序)、只要在我前面,不管是不是亲生的
4、preceding-sibling——当前元素节点之前的所有兄弟节点、比我大的兄弟,亲生的
5、following——当前元素标签之后的所有节点(html页面先后顺序))、只要在我后面的 ,不管是不是亲生的
6、following-sibling——当前元素节点标签之后的所有兄弟节点
语法
已知的元素/轴名称::标签名称[@属性=值]
例:
//div[@id="u1"]//a[@name="tj_login"]/preceding-sibling::a[@id="kw"]