转自https://blog.csdn.net/hou_angela/article/details/80305828
模糊查找
6.3 text方法
find_element_by_xpath("//a[contains(text(),‘新闻’)]") 查找超链接元素的文本内容
find_element_by_xpath("//*[text()=‘新闻’]") 查找所有内容为退出二字的元素
6.2 start-with方法(以XX开头)
find_element_by_xpath("//a[start-with(@href,‘http’)]")
6.1 contains 方法(包含)
find_element_by_xpath("//a[contains(@name,‘trnews’)]")
5.目录元素存在层级关系
例1: find_element_by_xpath("//ul[@class=‘app-list’]/li[contains(@class,‘safe’)]/div")
例2:定位上一层再定位目标元素(定位dl再定位dt)
find_element_by_xpath("//form[@id='J_login_form]/dl/dt/input[@id=‘J_password’]")
以下转自https://blog.csdn.net/DaxiaLeeSuper/article/details/79347838
//查找所有的"B"
var xpath="//B";
//查找所有元素
xpath = “//”;
// 选择所有路径依附于/A/B/的元素
xpath ="/A/B/";
//选择所有的有3个祖先元素的B元素
xpath ="////B" ;
// 选择所有父元素是DDD的BBB元素
xpath="//C/D";
// 选择A/B/C的第一个E子元素
xpath="/A/B/C/E[1]";
//选择A/B/C的最后一个E子元素
xpath="/A/B/C/E[last()]" ;
//选择有name属性的B元素
xpath = “//B[@name]” ;
//选择所有的name属性
xpath="//@name";
//选择有任意属性的B元素
xpath="//B[@]";
//选择没有属性的B元素
xpath="//B[not(@)]";
//选择含有属性id且其值为’e2’的E元素
xpath="//E[@id=‘e2’]";
//选择含有属性name且其值(在用normalize-space函数去掉前后空格后)为’b’的B元素
xpath="//B[normalize-space(@name)=‘b’]";
//选择含有2个B子元素的元素
xpath="//[count(B)=2]";
//选择含有3个子元素的元素
xpath="//[count()=3]";
//选择所有名称为B的元素(这里等价于//B)
xpath="//[name()=‘B’]";
//选择所有名称以"W"起始的元素
xpath="//[starts-with(name(),‘W’)]";
//选择所有名称包含"W"的元素
xpath="//[contains(name(),‘W’)]";
//选择名字长度为2(大于、小于)的元素;
xpath="//[string-length(name()) = 2]";
xpath="//[string-length(name()) < 2]";
xpath="//[string-length(name()) > 1]";
//多个路径可以用分隔符 | 合并在一起,可以合并的路径数目没有限制,选择所有的WF和C元素
xpath="//WF | //C";
//等价于/A
xpath="/child::A";
//等价于//C/D
xpath="//child::C/child:: D";
//选择文档根元素的所有后代.即所有的元素被选择
xpath="/descendant:: *";
//选择/A/C的所有后代元素
xpath="/A/C/descendant:: *";
//选择D元素的所有父节点
xpath="//D/parent:: *";
//选择D元素的父节点
xpath="//D/…" (两个点,这个csdn编辑器怎么回事啊!)
//选择WF元素的祖先节点
xpath="//WF/ancestor:: *";
//包含上下文节点之后的所有兄弟节点(此节点之后的所有兄弟节点)
xpath="//WF/following-sibling:: *";
//选择兄弟节点中span标签且其class属性为alert
xpath="//WF/following-sibling::span[@class=‘alert’]"
//包含上下文节点之前的所有兄弟节点(此节点之前的所有兄弟节点)
xpath="//WF/preceding-sibling:: *";
//包含同一文档中按文档顺序位于上下文节点 之后 的所有节点, 除了祖先节点,属性节点和命名空间节点
xpath="/A/B/following:: *";
xpath="//B/following:: *";
//包含同一文档中按文档顺序位于上下文节点之前的所有节点, 除了祖先节点,属性节点和命名空间节点
xpath="//WF/preceding:: *";
//包含上下文节点本身和该节点的后代节点;
xpath="//C/descendant-or-self:: *";
//仅代表自身节点
xpath="//A/self:: *";
//一起使用则包含所有节点
xpath="//WF/ancestor:: * | //Wf/descendant:: * | //WF/following:: * | //WF/preceding:: * | //WF/self:: “;
//选择当前节点的文字
xpath=”//E/child::text()";
//选择所有当前节点的子节点
xpath="//V/child::node()";
//选择偶数位置的B元素
xpath="//B[position() mod 2 = 0 ]";
//选择中间的E元素
/
div运算符做浮点除法运算,
mod运算符做求余运算,
floor函数返回不大于参数的最大整数(趋近于正无穷),
ceiling返回不小于参数的最小整数(趋近于负无穷) */
xpath="//E[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ]";
//可以忽略空白,寻找属性name=‘b’ or name=’ b '的元素
xpath="//@name[‘b’]";
//不忽略空白,完全匹配,寻找属性name='b’的元素
xpath="//@name[.=‘b’]";
2、使用dom定位
//span[text()=’${stockName}’]/parent:: */preceding-sibling:: *//div[@class=‘num’]
xpath:
contains:.//a[contains(@class,‘btnX’) and .//text()=‘Sign in’]
starts-with:.//a[starts-with(@class,‘btnSelectedBG’)]
使用相对位置定位当前元素的兄弟节点:
//span[contains(text(),‘昨收’)]/following-sibling:: *[position() = 1]
6、使用xpath匹配到多个元素时,可以使用一些关键字剔除掉某些不需要的元素
xpath=//input[ not(@id)][@type=“checkbox”]
这样就剔除了那些包含id属性的元素了
xpath=//span[ contains(.,‘已选’)]
xpath=//iframe[ starts-with(@id, ‘compose’)]
xpath= //li[@id=‘btn_forward’]//i[@class=‘i_triangle_d’]
//span[text()=‘买入’ and not(@class)]
//img[contains(@id,‘ext-gen605’)]
//img[contains(@src,’/…/’) and index=1]
3、定位元素出现多个,但只有一个可见,其他隐藏,可以这样定位:
$(".button:visible")[0]
(
"
.
c
o
d
e
−
n
a
m
e
−
l
i
n
e
:
v
i
s
i
b
l
e
"
)
[
0
]
.
c
h
i
l
d
r
e
n
[
1
]
4
、
找
出
文
本
为
“
买
入
”
的
元
素
/
/
b
u
t
t
o
n
[
t
e
x
t
(
)
=
‘
退
出
’
]
/
/
h
1
[
c
o
n
t
a
i
n
s
(
.
,
‘
人
民
币
’
)
]
此
外
,
c
s
s
S
e
l
e
c
t
o
r
还
有
一
些
高
级
用
法
,
如
果
熟
练
后
可
以
更
加
方
便
地
帮
助
我
们
定
位
元
素
,
如
我
们
可
以
利
用
用
于
匹
配
一
个
前
缀
,
(".code-name-line:visible")[0].children[1] 4、找出文本为“买入”的元素 //button[text()=‘退出’] //h1[contains(.,‘人民币’)] 此外,cssSelector还有一些高级用法,如果熟练后可以更加方便地帮助我们定位元素,如我们可以利用^用于匹配一个前缀,
(".code−name−line:visible")[0].children[1]4、找出文本为“买入”的元素//button[text()=‘退出’]//h1[contains(.,‘人民币’)]此外,cssSelector还有一些高级用法,如果熟练后可以更加方便地帮助我们定位元素,如我们可以利用用于匹配一个前缀,用于匹配一个后缀,用于匹配任意字符。例如:
匹配一个有id属性,并且id属性是以”id_prefix_”开头的超链接元素:a[id^=‘id_prefix_’]
匹配一个有id属性,并且id属性是以”_id_sufix”结尾的超链接元素:a[id$=’_id_sufix’]
匹配一个有id属性,并且id属性中包含”id_pattern”字符的超链接元素:a[id=‘id_pattern’]
xpath指定子节点
————————————————
版权声明:本文为CSDN博主「DaxiaLeeSuper」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/DaxiaLeeSuper/article/details/79347838
补os部分: