Skip to content

Instantly share code, notes, and snippets.

@tuaplicacionpropia
Last active March 27, 2018 06:35
Show Gist options
  • Save tuaplicacionpropia/5bfc88c1448a84c4add579b02d2c91ea to your computer and use it in GitHub Desktop.
Save tuaplicacionpropia/5bfc88c1448a84c4add579b02d2c91ea to your computer and use it in GitHub Desktop.
Methods for use casperjs easyly
var casper = require('casper').create({
/*
clientScripts: [
'includes/jquery.js', // These two scripts will be injected in remote
'includes/underscore.js' // DOM on every request
],
*/
pageSettings: {
resourceTimeout: 3600000,
loadImages: true, // The WebPage instance used by Casper will
loadPlugins: true // use these settings
},
logLevel: "debug", // Only "info" level messages will be logged
verbose: false, // log messages will be printed out to the console
waitTimeout: 3600000
});
var fs = require('fs');
casper.mostrar = function (txt) {
casper.echo(txt, 'ERROR');
};
casper.on('remote.message', function(msg) {
this.echo('remote message caught: ' + msg);
});
var _saveAs = function (res, target) {
var _searchTxt = res;
casper.then(function() {
var resultUrl = this.evaluate(function(searchTxt) {
var query = searchTxt;
var clicker = document.evaluate(query, document, null, XPathResult.ANY_TYPE, null).iterateNext();
if (clicker) {
console.log("DOWNLOADING ... " + clicker.href);
result = clicker.href;
}
return result;
}, _searchTxt);
var fs = require('fs');
fs.write(target, resultUrl, 'w');
waitNone();
});
};
Date.prototype.hhmm = function () {
var result = "";
var hours = "" + this.getHours();
var minutes = "" + this.getMinutes();
if (hours.length < 2) {
hours = "0" + hours;
}
if (minutes.length < 2) {
minutes = "0" + minutes;
}
result = hours + ":" + minutes;
return result;
};
Date.prototype.ddmmyyyy = function () {
var result = "";
var day = "" + this.getDate();
var month = "" + (this.getMonth() + 1);
var year = "" + this.getFullYear();
if (day.length < 2) {
day = "0" + day;
}
if (month.length < 2) {
month = "0" + month;
}
result = day + "/" + month + "/" + year;
return result;
};
var _wait = function (waitTime) {
var _waitTime = waitTime;
casper.then(function(){
this.wait(_waitTime, function(){});
});
};
var waitNone = function (waitTime) {
if (!waitTime) {
waitTime = 2000
}
casper.wait(waitTime, function(){});
};
var myClick = function (searchTxt, waitTime) {
var _searchTxt = searchTxt;
var _waitTime = waitTime;
casper.then(function() {
this.evaluate(function(searchTxt) {
var query = "//button[contains(., '" + searchTxt + "')]";
if (searchTxt.substring(0, 2) == "//") {
query = searchTxt;
}
//console.log("query = " + query);
var clicker = document.evaluate(query, document, null, XPathResult.ANY_TYPE, null).iterateNext();
if (!clicker) {
query = "//a[contains(., '" + searchTxt + "')]";
clicker = document.evaluate(query, document, null, XPathResult.ANY_TYPE, null).iterateNext();
}
//clicker.click();
var ev = document.createEvent("MouseEvent");
ev.initMouseEvent("click", true, true, window, null, 0, 0, 0, 0, false, false, false, false, 0, null);
clicker.dispatchEvent(ev);
}, _searchTxt);
waitNone(_waitTime);
});
};
var _setInput = function (path, value, waitTime) {
var _path = path;
var _value = value;
var _waitTime = waitTime;
casper.then(function() {
this.evaluate(function(query, value) {
var eInput = document.evaluate(query, document, null, XPathResult.ANY_TYPE, null).iterateNext();
if(eInput) {
if (eInput.nodeName == "SELECT") {
var options = eInput.options;
for (i = 0; i < options.length; i++) {
var option = options[i];
if (option.innerText == value) {
value = option.value;
break;
}
}
value = value;
}
if (eInput.type == "checkbox") {
eInput.checked = value;
}
else {
eInput.value = value;
}
}
}, _path, _value);
waitNone(_waitTime);
});
};
var screenshot = function (filename) {
var toSaveFile = filename;
casper.then(function() {
casper.capture(toSaveFile);
});
};
var waitFor = function (resource) {
var _resource = {type: 'xpath', path: resource};
casper.waitForSelector(_resource, function() {});
};
var open = function (url) {
casper.start(url, function() {});
};
var login = function (user, pass) {
_setInput('//*[@id="username"]', user);
_setInput('//*[@id="password"]', pass);
myClick("ACEPTAR");
waitFor('//*[@id="header-username"]');
};
open("http://web.com");
//login(casper.cli.get('user'), casper.cli.get('pass'));
login("user", "password");
casper.run();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment