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();
});
假设我会访问一个网站。在这个网站上有大量的数据。但是所有这些数据都具有相同的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();
});