Last active
March 27, 2018 06:35
-
-
Save tuaplicacionpropia/5bfc88c1448a84c4add579b02d2c91ea to your computer and use it in GitHub Desktop.
Methods for use casperjs easyly
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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