selenium04-简单的 xpath 表达式

有时候会遇到元素属性不带 id 和 name,或者遇到动态 id,且不能使用 link_text 进行元素定位时,使用 css_selector 定位或 xpath 定位就很适合。

虽然多数情况下,浏览器审查元素本身都支持直接提取 xpath 路径,但有时候也会出现提取出的 xpath 错误的情况,所以对 xpath 表达式稍微了解有益于对错误的 xpath 表达式的分辨,以及手动去更改。

当然,这里只列举一些简单的 xpath 路径表达式 

 

/AAA  #选择根节点 AAA

/AAA/BBB  #根据绝对路径选择元素

/AAA/CCC/DDD/*  #选择 /AAA/CCC/DDD/ 下所有元素

/*/*/*/BBB  #选择有3个祖先元素的 BBB 元素

/AAA/BBB[1]  #选择AAA的第一个BBB 子元素

 

/AAA/BBB[last()]  #选择AAA的最后一个BBB 子元素

 

 

//*  #选择所有元素

//AAA  #扫描整个文档,找出所有 AAA 元素

//AAA/BBB  #所有父元素为 AAA 的 BBB 元素

//AAA[@id]  #所有有 id 属性的 AAA 元素

//AAA[@id=BBB]  #所有有 id 属性为 BBB 的 AAA 元素

 

//BBB[@*]  #选择有任意属性的 BBB 元素

//*[count(BBB)=2]  #选择含有2个 BBB 子元素的元素

//*[count(*)=2]  #选择含有2个子元素的元素

//BBB[not (@*)]  #选择没有属性的 BBB 元素

 

//*[local-name()='AAA']  #找到 tag 为 AAA 的元素

//*[starts-with(local-name()), 'AAA']  #找到所有 tag 以 AAA 开头的元素

//*[contains(local-name(), 'AAA')]  #找到所有 tag 包含 AAA 的元素

//*[string-length(local-name()) = 3]  #找到所有 tag 长度为3的元素

 

|  #多个路径合并在一起,其实就相当于“与或非”中的“或”。例:

//CCC|//BBB  #选择所有的 CCC 和 BBB 元素

 

name()  #返回元素名称

start-with(A, B)  #接受两个参数,A 是以 B 为开始的

contains(A, B)  #接受两个参数,A 是包含 B 的

//*[name()=BBB]  # name 名称为 BBB 的元素

//*[starts-with(name(),B)]  #所有 name 名称为以 起始的元素

//*[contains(name(),C)]  #所有 name 名称包含 的元素

posted @ 2019-07-16 23:09  星海问道者  阅读(322)  评论(0编辑  收藏  举报