【发布时间】:2020-11-20 22:54:30
【问题描述】:
我想要完成的基本上是获取元素列表(当前使用document.querySelectorAll() 以便使用通用选择器获取元素列表。
例如:获取文档中.note 类的所有元素。
document.querySelectorAll('.note')
因为它从整个 DOM 中收集它们,所以我需要一个 JS 函数来使用与不使用 NodeList 的库不同的函数来迭代所有这些元素,并且我需要它来单独查询所有这些元素(这是一项自动化任务,因此忽略速度带来的好处在这里无关紧要)。
由于这些元素出现在 DOM 的不同部分和层次结构中,我无法使用像 :nth-of-type 这样的 CSS 选择器单独获取它们,我需要每个元素的特定 CSS 选择器/XPath。
例如,对于页面上的所有 .note 类元素,我需要结果类似于:
['.my-first-class .inner .note', 'section .different-class .inner .note', '.profile .profile-notes .note']
这种风格的东西对我非常有帮助。
非常感谢您提供的任何帮助!
【问题讨论】:
-
我的意见:使用
id- 这就是我所做的 - 我在这里受到反对:“查询选择器等等等等!” -
是否因为支持旧IE,所以需要使用不使用NodeList的函数?
-
那么你需要三级父级的列表吗?
-
@iAmOren 如果可以为我没有直接编辑权限的网站上的数百个元素追溯添加 ID,那肯定是有益的。不幸的是,我必须使用我得到的东西,而特定的 CSS/Xpath 就是这样。
-
@camaulay 我不是通过浏览器使用它,而是使用 Nightwatch.js 中内置的自动化测试,Nightwatch 不直接与浏览器交互,而是通过 Selenium 驱动程序,它不会给我回馈节点列表对象。
标签: javascript html css dom css-selectors