我在github上找到了这个:https://github.com/gr2m/phantomjs-console
但是它有点疯狂,需要在一个文件中写入命令,只能写一行,然后读取并删除该文件,输出结果在终端中。
我想要一个像...
$ phantomjs --console
phantom> console.log(typeof $)
[Object Function]
phantom> console.log("happy days")
happy days
phantom>
有类似这样的东西吗?
编辑:开始理解为什么他们用如此疯狂的方式...
来自PhantomJS-Node: https://github.com/sgentle/phantomjs-node
真的吗,它是如何工作的?
我将用一个问题回答这个问题。如果一个进程不支持共享内存、套接字、FIFO或标准输入,你该如何与它通信呢?
好吧,PhantomJS支持一件事情,那就是打开网页。实际上,它非常擅长打开网页。所以我们通过启动一个ExpressJS实例,在子进程中打开Phantom,并将其指向一个特殊的网页,将socket.io消息转换为alert()
调用来与PhantomJS通信。这些alert()
调用被Phantom捕获,于是你就完成了!
通信本身是通过James Halliday的fantastic dnode库进行的,幸运的是,当与browserify结合使用时,它足够好用,可以直接在PhantomJS的pidgin Javascript环境中运行。
如果您想要hack Phantom,请随意!您可以使用cake test或npm test运行测试,并使用cake build重新构建coffeescript/browserified代码。您可能需要npm install -g coffeescript
才能使cake正常工作。