使用PhantomJS,我想注入一些JS,好像<script>在任何其他<script>标签之前有一个额外的标签.这是因为页面上的脚本使用了PhantomJS没有的一些功能,即Function.prototype.bind和window.webkitRequestAnimationFrame.我有一个JS文件,其中包含两个自定义实现,我希望PhantomJS在页面上运行脚本时使用它们.
困难在于,如果我在page.open之前执行page.injectJs,脚本将被注入到空白页面中,而不会被转移到正在打开的页面.
或者,如果我在page.open之后执行page.injectJs,那么由于JavaScript错误(未定义的函数)已经发生,为时已晚.
我找到了一种似乎有用的方法,但显然是一种黑客行为:
page.onResourceReceived = function() {
page.injectJs('phantom-hacks.js')
};
Run Code Online (Sandbox Code Playgroud)
这注入了很多次(显然每个资源两次),但这没关系,因为我的脚本是幂等的.但是,我想知道正确的方法:在页面上的任何脚本运行之前只注入一次.
谢谢 :)
我知道如何禁用图像和插件,但似乎没有明显的选项来禁用CasperJS中的CSS.
谁知道它是如何工作的?