我正在尝试使用webpage来标识此google-chrome-devtools上包含 reviews 的元素。
使用以下xpath:
//div[@class='text show-more__control']
确定的元素数量为: 15
快照:
使用以下css-selectors:
div.text.show-more__control
确定的元素数量为: 25
快照:
所以,为什么 google-chrome-devtools 通过 XPath 标识的元素数量少于通过 CssSelector
标识的元素数量? >答案 0 :(得分:3)
XPath正在用词法检查字符串@class
的{{1}}属性值。
CSS表达式在语义上检查text show-more__control
属性值,这些属性值指示@class
应该同时具有div
和text
样式。
有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 }}对象。