Javascript 在CapserJS中操纵http响应体
我正在使用CasperJS 1.1.0-beta3和PhantomJS 1.9.8 在phantomjs解析和呈现响应主体内容之前,如何编辑响应主体内容 比如:Javascript 在CapserJS中操纵http响应体,javascript,phantomjs,casperjs,Javascript,Phantomjs,Casperjs,我正在使用CasperJS 1.1.0-beta3和PhantomJS 1.9.8 在phantomjs解析和呈现响应主体内容之前,如何编辑响应主体内容 比如: casper.on("resource.received", function(response) { response.body.add("<h1>bla</h1>"); } casper.on(“resource.received”),函数(响应){ 答复.正文.添加(“bla”); } 您不能这样做
casper.on("resource.received", function(response) {
response.body.add("<h1>bla</h1>");
}
casper.on(“resource.received”),函数(响应){
答复.正文.添加(“bla”);
}
您不能这样做。PhantomJS不公开主体,因此您无法更改它。当您收到JavaScript时,会出现这种情况,但这通常不能应用于任何类型的资源
您似乎收到了一个HTML资源
它是页面资源
如果HTML资源是页面资源,则可以使用资源。requested
事件处理程序中止请求,使用以检索页面源,根据某些规则更改内容并将其加载为当前内容
var done = false;
casper.on("page.resource.requested", function(req, network){
if (req.url === "someUrl") {
network.abort();
var content = this.evaluate(function(url){
return __utils__.sendAJAX(url, "GET");
}, req.url);
content = content.replace("somehtml", "myhtml");
this.page.setContent(content.replace("href=\"/", "href=\"http://domain.tld/path/"), req.url); // fix urls
done = true;
}
});
casper.start(someUrlToManipulate).waitFor(function check(){
return done;
}, function then(){
// further processing
}).run();
这是另一种资源
其他资源通常是使用JavaScript(比如模板)请求的。在这种情况下,您不能做任何事情,因为您必须重新生成处理此类响应的代码