webdriver.io 如何使用 node.js 从 DOM 中删除元素

webdriver.io how to remove elements from DOM with node.js

假设我会访问一个网站。在这个网站上有大量的数据。但是所有这些数据都具有相同的class。例如:

li.sampleClass

然后当你向下滚动时,新的数据将被无限滚动添加。但是 DOM 永远不会被清除。每个新数据都将存储为 li.sampleClass 这会导致极高的硬件使用率并且

.getText('li.sampleClass')

停止使用具有相同 class 的大量多个数据。当您查看 Inspector 时,您可以看到所有存储的数据。所以我想为什么不清除 DOM 并在滚动到下一个之前删除旧数据。

有没有一种方法可以使用 webdriver.io 从 DOM 中删除完整的 classes 或 ID,或者您是否知道使用 .getText 拆分过程的其他棘手方法?请注意,我在本地主机上使用 node.js 并且我无法访问该网站。该网站在线所以我想我不能使用像

这样的东西
.execute

从 webdriver.io 清除 DOM 通过 js 或者我可以吗?

是的,您可以使用 browser.execute() 方法从元素中删除 classes/ids。

例如,您想从每个 li 中删除 sampleClass。所以,它看起来像

browser.execute('const liElements = document.querySelector(\'li.sampleClass\'); liElements.classList.remove(\'sampleClass\')')

或相同,但不是将 JS 脚本作为字符串传递,而是可以使用函数

browser.execute(() => { const liElements = document.querySelector('li.sampleClass') liElements.classList.remove('sampleClass') }

查看文档 http://webdriver.io/api/protocol/execute.html 了解更多详细信息。

对于 v5 webdriverio,此代码有效:

browser.execute(() => {
      const elemToRemove = document.querySelector('.selector');
      elemToRemove.remove();
  });