Как я могу превратить часть моего скрипта 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

Другие вопросы по тегам