Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Phantomjs CasperJS(SlimerJS引擎),求值后步骤不继续_Phantomjs_Casperjs_Slimerjs - Fatal编程技术网

Phantomjs CasperJS(SlimerJS引擎),求值后步骤不继续

Phantomjs CasperJS(SlimerJS引擎),求值后步骤不继续,phantomjs,casperjs,slimerjs,Phantomjs,Casperjs,Slimerjs,当脚本被执行时,它永远不会到达它说“我永远不会被执行”的那一行 /*********/ var casper = require('casper').create( { //clientScripts: ["includes/jquery-1.11.1.min.js"], waitTimeout: 15000, stepTimeout: 5500, verbose: true, logLevel: 'debug', viewportSize:

当脚本被执行时,它永远不会到达它说“我永远不会被执行”的那一行

/*********/

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]': 'someE-Mailaddress@t-online.de',
            '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();
var casper=require('casper')。创建(
{
//clientScripts:[“includes/jquery-1.11.1.min.js”],
等待超时:15000,
步骤超时:5500,
没错,
日志级别:“调试”,
视口大小:{
宽度:1680,
身高:1050
},
onRunComplete:function(){
//不要在完成后退出。
},
onWaitTimeout:函数(){
logConsole('发生等待超时');
this.capture('xWait_timeout.png');
这是exit();
},
页面设置:{
“忽略错误”:正确
},
onStepTimeout:函数(self,m){
}
}
);
var subjectParameter=casper.cli.get(“subject”);
var timeoutForScreenshot=casper.cli.get(“timeoutForScreenshot”);
casper.options.stepTimeout=timeoutForScreenshot+500;
casper.on('step.timeout',函数(请求){
console.log(“--------------步骤:超时-----------------:”+请求);
request.abort();
});
卡斯珀,开始https://email.t-online.de,函数(){
用户代理(“Mozilla/5.0(WindowsNT6.3;WOW64;Trident/7.0;rv:11.0)像Gecko”);
casper.waitForSelector('input[name=pw_usr]”,函数(){
此.fillSelectors('form[name=“login”]”{
“输入[name=pw_usr]:”someE-Mailaddress@t-网上,de",,
“输入[name=pw_pwd]”:“somePassword”
});
},函数(){
log('未找到登录表单','错误');
casper.exit();
});
casper.then(函数(){
点击(“#pw#u提交”);
});
casper.waitForSelector('#rowListContainerTable',函数(){
//abort.request();
这个。评估(函数getElementInDom(术语){
var els=document.getElementsByTagName('span');
var len=els.长度;
对于(变量i=0;i
“subjectParameter”是一个字符串

“timeoutForScreenshot”是一个整数值

该脚本正在登录“”并查找主题==“subjectParameter”的电子邮件,它将打开邮件并拍摄屏幕截图,但在此之后,“getElementInDom步骤”之后的所有其他“步骤”将不会执行

是否有方法在步骤超时后继续下一个“步骤”?

回答: 忽略特定请求的URL(来自googleadservices),如下所示:

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

});
成功了

abort.request()abort
不是页面上下文中的全局属性,并且for循环将不再执行,则code>将产生错误。另请参见如何在页面上下文中单击元素。这不应该是slimerjs的问题。