PhantomJS:渲染页面前修改dom

PhantomJS:渲染页面前修改dom,dom,phantomjs,Dom,Phantomjs,我使用的是PhantomJS2.1.1 能够抓取网页并生成屏幕截图 它正在工作。。。但是在将页面呈现为png之前,我想做一些DOM操作(javascript) 我正在做的是(总结一下): 在firefox控制台中进行自我测试时 document.querySelector('[id^="boardBackgroundImg-"]').style.filter = 'invert(1)'; 它在工作 但在我的幻影脚本中。。。它什么也不做(但没有错误)。 我试着将它放在一个外部js文件中,并使用i

我使用的是PhantomJS2.1.1 能够抓取网页并生成屏幕截图

它正在工作。。。但是在将页面呈现为png之前,我想做一些DOM操作(javascript)

我正在做的是(总结一下):

在firefox控制台中进行自我测试时

document.querySelector('[id^="boardBackgroundImg-"]').style.filter = 'invert(1)';
它在工作

但在我的幻影脚本中。。。它什么也不做(但没有错误)。 我试着将它放在一个外部js文件中,并使用injectJS()或includeJS(),但没有更多帮助

有人有主意吗

显然,我想再做一些DOM转换(删除一些节点)

问候

更新

我已在最后更新了代码:

fs.write("test.htm", page.content, 'w');
phantom.exit()
文件内容不包含我提供的DOM更改。 看来page.evaluate(…)是只读的。就在这里从页面内容中获取数据

在PhantomJS中呈现页面之前,有没有办法修改DOM


FantomJS v2.1.1的Webkit渲染引擎现在相当陈旧,它不完全支持现代CSS或Javascript。如果可以,试着使用。

也许PhantomJS太旧了,无法解释css的某些功能。但这不是我的重点。正在使用保存页面内容。。。fs.write(“test.htm”,page.content,“w”);最后显示页面未被修改。似乎page.evaluate()是“只读”的,并且不修改DOM…好的,事实上你是对的。。。其他一些modif做得很好。它只是我的“反转”,没有被解释:'(因此,我正在测试Puppeter,它正在工作..但我有相同的问题…我正在尝试反转页面中的图像颜色。使用此语句“bgImage.style.filter='invert(1);”…进行评估,它什么也不做。相反,如果我使用此语句删除节点:“bgImage.parentNode.removeChild(bgImage)“它工作得很好。所以我的页面。评估(…)工作正常。只是更改样式,但不支持。你有什么想法吗?请为你的木偶演员脚本创建一个新问题,最好是使用真实的URL,以便我可以尝试提供帮助。好的,我已经完成了。它只是Chrome,不支持svg元素上的css过滤器。我必须动态创建svg过滤器并应用它来执行相同的操作。。。
fs.write("test.htm", page.content, 'w');
phantom.exit()