xpath_定位中@dom、starts-with、contains和text()、last()的对比.


运行环境 Runtime environment

1
2
操作系统: Windos10  
IDE: pycharm 2021.3.1 x64

背景

xpath 解析很强大,函数方法也很多,但是常用的也就那几个。

xpath_定位中@dom、starts-with、contains和text()、last()的对比。

常用位置定位和描述

测试用html

1
2
<input id="demo" class="bg s_btn btnhover" value="Raxianch" type="submit"/>
<a href="http://www.baidu.com">百度搜索</a>

@dom dom属性定位

@符号加上dom属性名称组成定位,例如:@id、@name、@href等等..高亮部分为被定位的HTML节点

//input[@id=’demo’]

同时匹配多个dom元素

//input[@id=’demo’][@value=’xxxx’]

//input[@id=’demo’][@value=’Raxianch’]

结合 通配符、and、不存在、or、不等于的用法:

//*[@id=”demo” and (not(@class) or @value!=”Raxianch”)]

starts-with 顾名思义,匹配一个属性开始位置的关键字 – 模糊定位

//a[starts-with(@name,’2d’)]

匹配到两个节点,排除了name属性中非’2d’开头的

contains 匹配一个属性值中包含的字符串 – 模糊定位

//a[contains(@name,’d’)]

匹配到四个节点,name属性的全有了

text() 函数文本定位

//a[@id=’cb_post_title_url’]/span/text()

//a[text()=’百度搜索’]

匹配文本为百度搜索的所有节点

last() 函数位置定位

//span[@class=’span_test’][last()]

/A/B/C[last()] 表示A元素→B元素→C元素的最后一个子元素,且class值为span_test