我想检查一个元素何时对人眼可见。我使用了像vector<Package *> myPack(5);
这样的方法,但这并没有帮助,因为它仍然没有显示。
我终于找到了一种方法来输出数据,告诉我使用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
答案 0 :(得分:0)
特别是一个步骤函数,用于等待页面上的元素变为可见,其名称waitUntilVisible()
恰好是waitFor()
与visible()
结合使用的简写。
在你的情况下,你会像这样使用它:
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()
,它只返回第一个匹配元素的信息而不是元素信息数组。