Xpath定位方式
-
绝对定位(绝对路径)
以/开头:父元素/子元素[位置] 顺序和位置
存在的问题:严格按照顺序、位置 -
**相对定位
根据元素的特征来查找元素,不用考虑位置/顺序
元素定位方法
- 查看元素有什么特征 f12
- 编写相对定位表达式,边写边确定是不是能唯一找到
-
//标签名[@属性名=值]
-
多个属性组合用: and or
//标签名[@属性名=值 and @属性名=值] -
文本内容(要根据业务来判断,文本内容是否会变动,如果是变动的,那就不能用文本定位)
//标签名[text()=文本内容 ] -
模糊匹配 - contains(text()/@属性,“值”)
//标签名[contains(text()/@属性,“值”)] -
任意元素匹配到括号里的内容!
//[text()=“值”]
//span[@=“值”]
//[@=“值”] -
层级定位 - 通过祖先找你—逐级定位
元素之间的关系:通过你自己本身的特征无法唯一定位到你自己
按照html的元素顺序,从上到下的逐级定位://祖先元素1//祖先元素2…//要定位的元素 -
层级定位 - 通过兄弟元素找你、通过子元素找祖先元素—轴定位
元素之间的关系
语法:已知元素(//…//…)/轴名称::标签名称[@属性名称=“属性值” and @属性名称=“属性值”]//…
-
举例: //div[@id="u1"]//a[@name="tj_login"] 搜索范围从整个html缩小到div[@id="u1"]这个元素: //div[@id="u1"] 然后从div[@id="u1"]这个元素的后代中去查找//a[@name="tj_login"]
轴名称的4种
parent:父元素
ancestor:祖先元素
preceding-sibling:亲生的姐姐/哥哥元素(同一个父元素,但是在html当中排在你要找的元素前面)
following-sibling:亲生的妹妹/弟弟元素(同一个父元素,但是在html当中排在你要找的元素后面)