常用的CSS定位,XPath定位和JPath定位

时间:2023-03-08 17:05:06

CSS定位

举例 描述
div#menu id为menu的div元素
div.action-btn.ok-btn class为action-btn和ok-btn的div元素
table#emailList   tr:nth-child(2) id为emailList的table里面的第二个tr元素。括号里的index从1开始。
input[type='submit'] 具有属性type并且其值为submit的input元素
div[id^='menu'] 具有属性id并且其值的前缀为menu的div元素
div[id$='menu'] 具有属性id并且其值的后缀为menu的div元素
div[id*='menu'] 具有属性id并且其值包含menu的div元素
div[id*='menu']:not([style*='display:   none']) 具有属性id和style并且id值包含menu,style值不包含‘display:none’的div元素
div#menu>ul.item id为menu的div元素下面最靠近它的class为item的ul元素

XPath定位

表达式 描述
nodename 选取此节点的所有子节点
/ 从根节点选取
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性
   
举例 描述
/bookstore/book[1] 选取属于 bookstore 子元素的第一个 book 元素。index从1开始。
/bookstore/book[last()] 选取属于   bookstore 子元素的最后一个 book 元素。
/bookstore/book[last()-1] 选取属于 bookstore 子元素的倒数第二个 book 元素。
/bookstore/book[position()<3] 选取最前面的两个属于   bookstore 元素的子元素的 book 元素。
//title[@lang] 选取所有拥有名为   lang 的属性的 title 元素。
//title[@lang='eng'] 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。
/bookstore/book[price>35.00] 选取所有   bookstore 元素的 book 元素,且其中的 price 元素的值须大于 35.00。
/bookstore/book[price>35.00]/title 选取所有   bookstore 元素中的 book 元素的 title 元素,且其中的 price 元素的值须大于 35.00。

JPath定位

表达式 描述
$ The root element   to query. This starts all path expressions.
@ The current node   being processed by a filter predicate.
* Wildcard.   Available anywhere a name or numeric are required.
.. Deep scan.   Available anywhere a name is required.
.<name> Dot-notated child
['<name>' (, '<name>')] Bracket-notated   child or children
[<number> (, <number>)] Array index or   indexes
[start:end] Array slice   operator
[?(<expression>)] Filter expression.   Expression must evaluate to a boolean value.
   
举例 描述
$.store.book[*].author The authors of all   books
$..author All authors
$.store.* All things, both   books and bicycles
$.store..price The price of   everything
$..book[2] The third book
$..book[0,1] The first two   books
$..book[:2] All books from   index 0 (inclusive) until index 2 (exclusive)
$..book[1:2] All books from   index 1 (inclusive) until index 2 (exclusive)
$..book[-2:] Last two books
$..book[2:] Book number two   from tail
$..book[?(@.isbn)] All books with an   ISBN number
$.store.book[?(@.price <   10)] All books in store   cheaper than 10
$..book[?(@.price <=   $['expensive'])] All books in store   that are not "expensive"
$..book[?(@.author =~   /.*REES/i)] All books matching   regex (ignore case)
$..* Give me every   thing
$..book.length() The number of   books