Casperjs,等待不执行然后()

时间:2016-03-04 02:54:42

标签: javascript phantomjs casperjs

我试图根据坐标点击casperjs上的元素,点击有时会失败,因为例如一个链接可能有一个换行符,这使我得到的随机坐标尝试点击,如左下角那里没有可点击的元素(即使x,y,x +宽度,y +高度边界正确)。所以我试图检测链接何时失败以及何时成功。

我试过这段代码:

var oldUrl;

casper.start( url, function ( ) {

    oldUrl = casper.getCurrentUrl();

    // code that clicks element based on coordinates

}).then( function() {


    casper.waitFor(function check() {
        return oldUrl === casper.getCurrentUrl();
    }, function then() {
        require('utils').dump( 'link click succeed' );
    }, function timeout() { 
        require('utils').dump( 'link click failed' );
    }, 5000);

}).run();

也尝试没有第一个then()并在启动后直接使用waitFor .start(...).waitFor(...)。我也尝试了这个代码,我发现谷歌搜索:

casper.waitForUrlChange = function(then, onTimeout, timeout){
    var oldUrl;
    this.then(function(){
        oldUrl = this.getCurrentUrl();
    }).waitFor(function check(){
        return oldUrl === this.getCurrentUrl();
    }, then, onTimeout, timeout);
    return this;
};

casper.start( url, function ( ) {

    // code that clicks element based on coordinates

}).waitForUrlChange( function then() {
        require('utils').dump( 'link clicked succeed' );
    }, function timeout() { 
        require('utils').dump( 'link click failed' );
    }, 5000);
}).run();

当我使用一些随机坐标来确保点击失败时,我会在输出中得到这个:

  

[警告] [幻影] Casper.waitFor()超时

     

链接点击失败

但是当我使用真实坐标确保点击成功时,我从未在输出上获得link clicked succeed,脚本只需单击元素,然后转到“about:blank”并退出。

当click元素成功时,如何让它执行“then()”函数?

0 个答案:

没有答案