我怎样才能把我的casperjs脚本的一部分变成了一项功能,我可以多次使用(How can I tu

2019-10-19 15:47发布

好了,所以这里是低于我的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");
});

我想上面的测试出使用卡斯帕扩展。

Answer 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模块



文章来源: How can I turn part of my casperjs script into a function so I can use it multiple times