找不到元素,但casper.exist显示为true

时间:2018-03-13 09:53:49

标签: phantomjs casperjs

我遇到一个问题,即使找到了选择器,我的CasperJS也找不到特定的元素。

请参阅下面的代码:

var casper = require('casper').create();

casper.userAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36');
casper.options.waitTimeout = 5000;
casper.options.viewportSize = {width: 1920, height: 1080};

casper.start('http://www.mega888.vip/login.html', function() {
    this.echo("Login Page Loaded.");
});

casper.waitForSelector('div.login-box-body', function() {
    if(!casper.exists('div.login-box-body')){
       this.echo("Login Box Body Exist");
    } else {
       this.echo("Login Box Body Not Exist");
    }

    if(!casper.exists('input#userName.form-control.input-lg')){
       this.echo("Username field Exist");
    } else {
       this.echo("Username field Not Exist");
    }

    if(!casper.exists('input#password.form-control.input-lg')){
       this.echo("Password field Exist");
    } else {
       this.echo("Password field Not Exist");
    }
});

casper.run();

从上面的代码中,它回显Login Box Body Not Exist,它显然已经满足条件waitForSelector('div.login-box-body')

此外,对于casper.exists('input#userName.form-control.input-lg条件,它返回TRUE,但是当我尝试使用this.sendKeys函数时,它表示无法找到元素。

Error 1

任何人都可以帮助我吗?无论我如何尝试,我都无法使用这些代码。

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试将if语句包装在then()中,如下所示:

casper.then(function(){     
if(casper.exists('input#userName.form-control.input-lg')){
       this.echo("Username field Exist");
    } else {
       this.echo("Username field Not Exist");
    }
});
编辑:删除!在casper.exists()上,如果存在,它将返回true,并且您希望显示“用户名字段存在”。