我想编写PhantomJS脚本,允许在localhost版本和网站的生产版本上进行测试(localhost需要解析主机名,不能在ip地址上工作)。该脚本基本上只是在两个版本之间进行比较:加载本地版本,渲染到图像,加载生产版本,渲染到图像并比较这两个版本。我现在正在做的是使用主机文件,它需要大量的修改和保存主机文件(不是很好的解决方案,因为它影响其他人,有时它被缓存)
还有另一种方法是使用主机头,例如:
prod:http://example.com
local:http://127.0.01/与host:example.com
与hostfile具有相同的结果,更安全。问题是只有主要的html加载了本地版本,资源,css,图像静态加载使用127.0.0.1无法解决....
我的问题是:如何告诉PhantomJS对所有请求使用主机头?
答案 0 :(得分:4)
我找到答案:D,通过拦截resourceRequest事件,我们可以更改资源的url或标题。
var targetHost= 'example.com';
var targetIP = '127.0.0.1';
var page = require('webpage').create();
page.onResourceRequested = function(request, network){ //Intercept request here, change url,header.
var newUrl = request.url.replace(targetHost, targetIP);
console.log('Intercepted change url to ', newUrl, targetHost);
network.setHeader('Host', targetHost);
network.changeUrl(newUrl);
};
page.open(url, function() {});