2014-09-01 1 views
0

Когда сценарий будет выполнен, он никогда не достигнет линии, где говорится: «Я НИКОГДА НЕ БУДУТ ВЫПОЛНИТЬ».CasperJS (движок SlimerJS), шаг не продолжается после оценки

/*********/

var casper = require('casper').create(
{ 
    //clientScripts: ["includes/jquery-1.11.1.min.js"], 
    waitTimeout: 15000, 
    stepTimeout: 5500, 
    verbose: true, 
    logLevel: 'debug', 
    viewportSize: { 
     width: 1680, 
     height: 1050 
    }, 
    onRunComplete: function() { 
    // Don't exit on complete. 
    }, 
    onWaitTimeout: function() { 
     logConsole('Wait TimeOut Occured'); 
     this.capture('xWait_timeout.png'); 
     this.exit(); 
    }, 
    pageSettings: { 
     "ignoreSslErrors": true 
    }, 
    onStepTimeout: function (self, m) { 

    } 
} 
); 

var subjectParameter = casper.cli.get("subject"); 
var timeoutForScreenshot = casper.cli.get("timeoutForScreenshot"); 
casper.options.stepTimeout = timeoutForScreenshot + 500; 

casper.on('step.timeout', function (request) { 
    console.log("---------------STEP:timed out---------------------:" + request); 
    request.abort(); 
}); 

casper.start('https://email.t-online.de', function() { 

    casper.userAgent('Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko)'); 

    casper.waitForSelector('input[name=pw_usr]', function() { 

     this.fillSelectors('form[name="login"]', { 
      'input[name=pw_usr]': '[email protected]', 
      'input[name=pw_pwd]': 'somePassword' 
     }); 

    }, function() { 
     casper.log('no login-form found', 'error'); 
     casper.exit(); 
    }); 

    casper.then(function() { 
     this.click("#pw_submit"); 
    }); 

    casper.waitForSelector('#rowListContainerTable', function() { 
     //abort.request(); 

     this.evaluate(function getElementInDom(term) { 

      var els = document.getElementsByTagName('span'); 
      var len = els.length; 

      for (var i = 0; i < len; i++) { 
       if (els[i].innerHTML.indexOf(term) != -1) { 
        els[i].click(); 
        abort.request(); 
       } 
      } 

     }, subjectParameter); 

     this.then(function() { 
      this.echo("I WILL NEVER BE EXECUTED"); 
     }); 

     this.wait(8000, function() { 
      this.capture('tonline - ' + subjectParameter + '.png', { 
       top: 0, 
       left: 0, 
       width: 1680, 
       height: 1050 
      }); 

      casper.log('mail found', 'error'); 
      //casper.exit(); 
     }); 

    }, function() { 
     casper.log('login failed', 'error'); 
     casper.exit(); 
    }); 

}); 

casper.run(); 

"subjectParameter" является строкой

"timeoutForScreenshot" является целочисленное значение

Скрипт входа в «https://email.t-online.de» и ищем E-Mail, где subject == «subjectParameter», он открывает почту и должен сделать снимок экрана, но после этого все остальные «шаги» после «getElementInDom-Step» не будут выполнены.

Есть ли способ перейти к следующему «шагу» после шага.

+0

'abort.request();' приведет к ошибке, если 'abort' не является глобальным свойством в контексте страницы, а цикл for не будет выполняться дальше. Также см. [Здесь] (http://stackoverflow.com/q/15739263/1816580) как щелкнуть элемент в контексте страницы. Это не должно быть проблемой для slimerjs. –

ответ

0

Ответ: игнорирование конкретного запрошенный URL (от googleadservices) так:

casper.on('resource.requested', function (requestData, request) { 
    if (requestData.url.indexOf('xplosion') != -1) { 
     request.abort(); 
    } 

}); 

и это сработало!

 Смежные вопросы

  • Нет связанных вопросов^_^