Как я могу превратить часть моего скрипта casperjs в функцию, чтобы я мог использовать ее несколько раз
Итак, вот часть моего скрипта casperjs ниже, который работает нормально
if(casper.exists(ac1)){
var uel = "https://example.ws/send.html?f=1099817";
this.thenOpen(uel, function() {
casper.wait(10000, function() {
casper.then(function() {
this.evaluate(function() {
var amount = 0.29
var result = amount * 0.019
var result2 = result.toFixed(6);
var fresult = amount - result2;
var needed = fresult.toFixed(3);
document.getElementById('account').value = 'ydfg028';
document.getElementsByName('data')[0].value = needed;
});
this.click("input#sbt.button[type='submit']");
casper.wait(10000, function() {
casper.then(function() {
this.capture("filenadfgmedsfg.jpg");
var el2 = this.getHTML();
fs.write('results23.html', el2, 'w');
});
});
});
});
});
} else {
this.exit();
}
У меня проблема более 14 из следующих утверждений
if(casper.exists()){
Поэтому я пытаюсь использовать шаги casperjs как функцию. Это то, что я попробовал ниже, но это ничего не делает, и casperjs заканчивается, когда достигает функции. Вот что я пытаюсь
Это функция Casperjs, которую я сделал
function casperstep(amount, user, location) {
var uel = "https://example.ws/send.html?f=" + location;
this.thenOpen(uel, function() {
casper.wait(10000, function() {
casper.then(function() {
this.evaluate(function() {
var result = amount * 0.019
var result2 = result.toFixed(6);
var fresult = amount - result2;
var needed = fresult.toFixed(3);
document.getElementById('account').value = user;
document.getElementsByName('data')[0].value = needed;
});
this.click("input#sbt.button[type='submit']");
casper.wait(10000, function() {
casper.then(function() {
this.capture("filenadfgmedsfg.jpg");
var el2 = this.getHTML();
fs.write('results23.html', el2, 'w');
});
});
});
});
});
}
Затем, когда я попробую следующее
if(casper.exists(ac1)){
casperstep(0.29, "username", "3245324");
}
это просто не работает вообще. Ступени каспера просто не стреляют. Как я могу это исправить в теории? Это должно было сработать.
Что я пытался с вашими ответами...
Моя функция
casper.captchaget = function (selector) {
var Loc = this.getHTML(selector, true).match(/src="(.*?)"/)[1];
var Ilocation = 'https://perfectmoney.is' + Loc;
var image = Loc;
var imagesplit = image.split ('?');
var split1 = imagesplit[1];
var string = split1 + ".jpg";
this.download(Ilocation, string);
}
и как я пытаюсь это использовать
casper.then(function(){
this.captchaget('img#cpt_img');//this.casperstep(0.29, "username", "3245324");
});
Я попробовал выше, чтобы проверить, используя расширение Каспера.
1 ответ
Ну, вы хотите добавить свой собственный метод к экземпляру объекта casper: http://casperjs.readthedocs.org/en/latest/extending.html
так:
casper.casperstep = function (amount, user, location) {
{your instructions....}
}
Тогда назовите это:
casper.start();
casper.then(function(){
if(casper.exists(ac1)){
casper.casperstep(0.29, "username", "3245324");//this.casperstep(0.29, "username", "3245324");
}
})
.run(function() {
test.done();
});
Старая обезьяна исправлений:)
Чтобы увидеть другие способы сделать это: Пользовательские модули casperjs