为什么google-chrome-devtools通过XPath识别的元素数量少于通过CssSelector识别的元素数量

时间:2019-04-05 12:42:27

标签: css google-chrome xpath css-selectors google-chrome-devtools

我正在尝试使用webpage来标识此上包含 reviews 的元素。

使用以下

//div[@class='text show-more__control']

确定的元素数量为: 15

快照:

xpath_15

使用以下

div.text.show-more__control

确定的元素数量为: 25

快照:

cssSelectors_25

所以,为什么 google-chrome-devtools 通过 XPath 标识的元素数量少于通过 CssSelector

标识的元素数量? >

1 个答案:

答案 0 :(得分:3)

XPath正在用词法检查字符串@class的{​​{1}}属性值。

CSS表达式在语义上检查text show-more__control属性值,这些属性值指示@class应该同时具有divtext样式。

有10个show-more__control元素满足CSS语义选择标准,但XPath词汇标准不合格,因为它们的div词汇上是

@class

测试text show-more__control clickable ^^^^^^^^^^ 的通常解决方法是分别填充并检查每个类:

@class

此XPath返回25个//div[ contains(concat(' ',@class,' '), ' text ') and contains(concat(' ',@class,' '), ' show-more__control ') ] 元素,就像CSS选择器一样。

注意:这里特别棘手的是,div属性值的clickable部分不在静态源中,仅在{{1 }}对象。