This question already has an answer here:
okay so here's my casperjs function :
if(casper.exists(ac2)){
var accountnumber = this.fetchText('div.arabic:nth-child(2) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(2) > a:nth-child(1)');
var redir = accountnumber.substr(1);
casper.then(function() {
var uel = "https://example.ws/send.html?f=" + redir;
this.thenOpen(uel, function() {
casper.wait(10000, function() {
casper.then(function() {
var accountnumber1 = this.fetchText('div.arabic:nth-child(1) > font:nth-child(1)');
var acccc = accountnumber1.split(' ');
system.stdout.writeLine(acccc[3]); // this output a number
var amount = acccc[3];
var result = amount * 0.019;
var result2 = result.toFixed(6);
var fresult = amount - result2;
var needed = fresult.toFixed(3);
system.stdout.writeLine(needed); // this output a number
this.evaluate(function() {
document.getElementById('account').value = '6028';
document.getElementsByName('data')[0].value = needed; // this just does not work even though i know there a number needed in var needed
});
//this.click("input#sbt.button[type='submit']");
casper.wait(10000, function() {
casper.then(function() {
this.capture("capture1.jpg");
var el2 = this.getHTML();
fs.write('result.html', el2, 'w');
});
});
});});
});
});
} else {
this.exit();
}
For some reason i just can't get the variable to send properly to this function :
this.evaluate(function() {
document.getElementById('account').value = '6028';
document.getElementsByName('data')[0].value = needed; // this just does not work even though i know there a number needed in var needed
});
Can anyone help me fix this so the number actualy gets pass properly to evaluate function.
Pass your
needed
variable as an argument of theevaluate()
function derived from PhantomJS'sevaluate()
.You mix the 2 different contexts. In the page DOM environment (inside
evaluate()
),needed
is unknown, becauseevaluate()
is sandboxed.I set
var neededCasperContext = needed;
to show you the difference, but of course you can pass it directly.