在PhantomJS中检索URL,而不是通过客户端

时间:2012-10-14 13:22:34

标签: phantomjs casperjs

有没有办法在不通过QTWebKit客户端的情况下下载PhantomJS(或CasperJS)中的文件?

我想从与测试页面无关的URL下载以JSON编码的数据。

从PhantomJS API或CasperJS API开始,人们不会明白这一点,因为它们的功能似乎是为了在幽灵般的客户端中打开URL。

我希望人们可以简单地运行:

  fetch(URL, callback);

由于两个原因,下载到PhantomJs页面然后下载到客户端的正常过程是有问题的。首先,它缓慢而繁琐。其次,它违反了同源政策(因此CasperJS base64encode功能不起作用。)

最基本的,我希望PhantomJS客户端的javascript运行器可以实现XMLHttpRequest(或类似的东西),但我想知道是否有更多可用的规范。

修改

也许可以只包含jQuery并使用$.ajax,但不幸的是,它也会抛出同源异常:

  

XMLHttpRequest无法加载http://example.com:5000/test。原始文件:// Access-Control-Allow-Origin不允许。

我能想到的唯一解决方案是在一个单独的进程中下载我想要在JSON中访问的文件(例如使用wget),但是从PhantomJS does not permit execution of processes开始(在撰写本文时),它似乎它必须与PhantomJS分开启动。

1 个答案:

答案 0 :(得分:2)

您可以尝试查看

casper.download(String url, String target[, String method, Object data])

来自http://docs.casperjs.org/en/latest/modules/casper.html#download

我不确定您想要对下载的数据做什么,但是您可以使用PhantomJS'injectJS()includeJS()并传入本地文件以便使用正在测试的页面中的数据。