想象一下,我会访问一个网站。在这个网站上有大量的数据。但所有这些数据都具有相同的类别。例如:
li.sampleClass
然后当您向下滚动时,将添加无限滚动的新数据。但DOM永远不会被清除..每个新数据都将存储为li.sampleClass,这会导致极高的硬件使用率和
.getText('li.sampleClass')
停止使用同一类的大量多个数据。查看检查器时,您可以看到所有存储的数据。所以我想为什么不清除DOM并在滚动到下一个之前删除旧数据。
有没有办法用webdriver.io从DOM中删除完整的类或ID,或者您是否知道用.getText拆分进程的其他棘手方法?请注意我在localhost上使用node.js而我无法访问该网站。该网站在线,所以我想我不能使用像
这样的东西.execute
从webdriver.io 通过js清除DOM或者我可以吗?
答案 0 :(得分:1)
是的,您可以使用browser.execute()
方法从元素中删除类/ ID。
例如,您想从每个sampleClass
中删除li
。所以,它看起来像
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以获取更多详细信息。
答案 1 :(得分:1)
对于v5 webdriverio,此代码有效:
browser.execute(() => {
const elemToRemove = document.querySelector('.selector');
elemToRemove.remove();
});