css - 为什么 google-chrome-devtools 通过 XPath 识别的元素数量少于通过 CssSelector 识别的元素数量
问题描述
我正在尝试使用google-chrome-devtools识别包含此网页上评论的元素。
使用以下xpath:
//div[@class='text show-more__control']
确定的元素数量为:15
快照:
使用以下css-selectors:
div.text.show-more__control
确定的元素数量为:25
快照:
那么,为什么google-chrome-devtools通过XPath识别的元素数量少于通过CssSelector识别的元素数量
解决方案
XPath 在@class
词法上检查字符串的属性值,text show-more__control
.
CSS 表达式在语义上检查@class
指示div
应该同时具有样式text
和show-more__control
样式的属性值。
有 10 个div
满足 CSS 语义选择标准的元素不符合 XPath 词法标准,因为它们的@class
词法是
text show-more__control clickable
^^^^^^^^^^
测试的通常解决方法@class
是分别填充和检查每个类:
//div[ contains(concat(' ',@class,' '), ' text ')
and contains(concat(' ',@class,' '), ' show-more__control ') ]
这个 XPath 返回 25 个div
元素,就像 CSS 选择器一样。
注意: 这里特别棘手的是,clickable
部分div/@class
属性值不存在于静态源中,仅存在于div
对象的动态属性中。
推荐阅读
- node.js - Nodemailer 错误:“路径”参数必须是字符串类型。收到未定义
- regex - perl 正则表达式捕获返回相同的值 (1)
- javascript - Firebase pubsub 函数调度无效的时间表或时区
- reactjs - 如何使用地图功能向孩子添加“唯一键道具”
- php - 如何从 cakephp2.x 中的 shell 访问插件 shell 助手
- r - 在 R 中使用 write.table() 导出数据帧时保留数值类
- c# - 长时间管理 UWP WebView 整体内存消耗
- javascript - Laravel 应用程序在生产中出现问题,强制关闭连接
- javascript - Snap,Crackle,Pop:Javascript
- c - 整数 650 的 ASCII 字符