Json 如何检查特定元素是否可见,并仅在CasperJS中执行任务?

Json 如何检查特定元素是否可见,并仅在CasperJS中执行任务?,json,if-statement,phantomjs,visibility,casperjs,Json,If Statement,Phantomjs,Visibility,Casperjs,我想检查元素何时对人眼可见。我使用过类似于this.exists()的方法,但这没有帮助,因为它仍然没有显示出来 我终于找到了使用getElementsInfo()输出数据的方法,该方法可以告诉我数据是否可见 以下是我所拥有的和输出: var fs = require('fs'); var casper = require('casper').create({ viewportSize: {width: 950, height: 950} }); casper.start('https:

我想检查元素何时对人眼可见。我使用过类似于
this.exists()
的方法,但这没有帮助,因为它仍然没有显示出来

我终于找到了使用
getElementsInfo()
输出数据的方法,该方法可以告诉我数据是否可见

以下是我所拥有的和输出:

var fs = require('fs');

var casper = require('casper').create({
  viewportSize: {width: 950, height: 950}
});

casper.start('https://example.com/check.html', function() {
    //this.captureSelector('1p.png', 'body');
    this.echo(this.getTitle());
});
casper.then(function(){
    var one = casper.cli.get(0);
    var two  = casper.cli.get(1);
    this.sendKeys('input[id="txt"]',one);

    casper.waitForSelector('#txtsend', function() {
        this.click('#txtsend');
    });
    casper.waitForSelector('#Step1', function() {
        require('utils').dump(this.getElementsInfo('#Step1'));
        var a = this.fetchText('#Step1');
        this.echo(a);
    });
});

casper.run();
这是我要检查
visible
是否为真的输出,如果为真,则运行一个命令,如果为假,则运行另一个命令

[
{
“属性”:{
“id”:“步骤1”
},
“高度”:42,
“html”:“准备好完成了”,
“节点名称”:“跨度”,
“标记”:“准备好完成了”,
“文本”:“准备完成,
“visible”:true,//这也可以是false这是我想要获取和监视的内容,是true还是false
“宽度”:229,
“x”:624,
“y”:484
}
]

有一个特别的step函数,用于等待页面上的某个元素变为可见,该元素被恰当地命名,这只是与的缩写

在您的情况下,您可以这样使用它:

casper.waitForSelector('#txtsend', function() {
    this.click('#txtsend');
}).waitUntilVisible('#Step1', function then() {
    var a = this.fetchText('#Step1');
    this.echo(a);
    // do something
}, function onTimeout(){
    this.echo("not found");
    // do something else
});
您还可以省略
onTimeout
回调。如果找不到元素,它将停止脚本

此外,您不需要解析任何内容,因为
getElementsInfo()
的输出是一个对象,您可以简单地访问:

var info = casper.getElementsInfo("#Step");
casper.echo("Is visible? " + info[0].visible);

您还可以使用
getElementInfo()
它只返回第一个匹配元素的信息,而不是元素信息数组。

Artjom否我现在没有让我在文档中查看它,我没有看到这一点,谢谢,如果您喜欢添加答案和使用示例,如果它符合我需要的测试,我将接受您的答案now@ArtjomB.请写一封信给我我们的评论作为一个答案,效果很好,我不知道我怎么会在文档中漏掉这个,一定是因为我一直在努力,我的答案有帮助吗?你有什么问题吗?