如何使用CasperJS确定是否存在特定输入

时间:2015-06-11 19:59:01

标签: javascript css-selectors casperjs

我的Html

<input name="SUBMIT-chn:$INTERNAL_password.pss" title="Select" 
    class="image  selectIcon" type="image" alt="Select" src="docs/pics/select.png">

我正在尝试使用CasperJS来了解它是否存在以及是否存在然后“点击”它?

var casper = require('casper').create();
var site = 'http://internalsite/username=abc';

var exists;
casper.start(site, function() {
    exists = this.evaluate(function() {
        return __utils__.exists('image selectIcon');
    });
});

casper.run(function() {
    this.echo(exists).exit();
});

1 个答案:

答案 0 :(得分:2)

clientutils.exists()期望CSS选择器作为参数。看来你想根据它的两个类属性确定输入元素是否存在。

'image selectIcon'不是基于class属性选择元素的方式。在这种情况下,适当的CSS选择器是这样的:

'.image.selectIcon'

可以通过在前面添加一个点来基于单个类(多个类由空格分隔)来选择元素。必须在没有空格的情况下编写基于同一元素上的多个类的选择,因为选择器中的空格意味着先前所选元素的后代(例如子)。

您可以使用waitForSelector()等待元素出现,以便动态生成网站,然后点击它:

casper
    .start(url)
    .waitForSelector('.image.selectIcon')
    .thenClick('.image.selectIcon')
    .then(function(){
        // see what happened after the click
        this.capture("screenshot.png");
    })
    .run();