有没有办法在不通过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分开启动。
答案 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()
并传入本地文件以便使用正在测试的页面中的数据。