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

How to determine if a specific input exists using CasperJS

我的Html

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

我正在尝试使用 CasperJS 来了解它是否存在,如果存在,那么 "Click" 是吗?

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();
});

clientutils.exists() 期望 CSS selector 作为参数。您似乎想根据输入元素的两个 class 属性来确定输入元素是否存在。

'image selectIcon' 不是您如何 select 基于 class 属性的元素。一个合适的 CSS select 或者在那种情况下是这个:

'.image.selectIcon'

一个元素可以基于单个 class(多个 class 由白色 space 分隔)通过在其前面加上一个点来 selected。基于同一元素上的多个 class 的选择必须不写 space,因为 selector 中的 space 表示该元素的后代(例如子代)之前 selected 元素。

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

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