There is an easier way than the one below. You can access the casper.page.customHeadersinstance property of the PhantomJS webpage.
casper.then(function() {
casper.page.customHeaders = {
"CuStOm": "Header"
};
this.fillSelectors("#registration-form", { }, true);
});
casper.then(function() {
casper.page.customHeaders = {};
});
, , . setTimeout fillSelectors.
. __utils__.sendAJAX .
XMLHttpRequest . Ajax, :
casper.thenFormToXHR = function(formSelector, data, customHeaders){
this.thenEvaluate(function(formSelector, customHeaders){
function submitForm(oFormElement) {
window.__requestDone = false;
var xhr = new XMLHttpRequest();
for(var header in customHeaders) {
xhr.setRequestHeader(header, customHeaders[header]);
}
xhr.onload = function(){
window.__requestDone = true;
};
xhr.open (oFormElement.method, oFormElement.action, true);
xhr.send (new FormData(oFormElement));
return false;
}
document.querySelector(formSelector).onsubmit = submitForm;
}, formSelector, customHeaders);
this.then(function(){
this.fillSelectors(formSelector, data, true);
});
this.waitFor(function check(){
return this.evaluate(function(){
return window.__requestDone;
});
});
};
:
casper.thenFormToXHR("#registration-form", {
"#first-name": "Bob",
"#last-name": "Smith",
"#email-address": RANDOM_EMAIL,
"#password": PASSWORD,
"#password-confirm": PASSWORD
}, {
"X-Requested-With": "XMLHttpRequest"
});
, XHR:
casper.formToXHR = function(formSelector, data, customHeaders){
this.evaluate(function(formSelector, customHeaders){
function submitForm(oFormElement) {
var xhr = new XMLHttpRequest();
for(var header in customHeaders) {
xhr.setRequestHeader(header, customHeaders[header]);
}
xhr.open (oFormElement.method, oFormElement.action, true);
xhr.send (new FormData(oFormElement));
return false;
}
document.querySelector(formSelector).onsubmit = submitForm;
}, formSelector, customHeaders);
this.fillSelectors(formSelector, data, true);
};