如何检查Casper.js中是否禁用了文本输入?

时间:2015-01-14 16:34:48

标签: javascript casperjs disabled-input

我正在写一个Casper.js测试。我需要检查输入字段是否为disabled

casper.waitForSelector("input[id='myid']",
    function success() {
        ...
    },
    function fail() {
        ...
    });

    ...

检索字段不是问题,但是禁用测试呢?

3 个答案:

答案 0 :(得分:2)

我不完全确定Casper.js是否支持此功能,但您应该能够在选择器中使用:disabled pseudo-class并让DOM为您处理它。

如果方法正常,您的代码将变为:

casper.waitForSelector("input[id='myid']:disabled",
function success() {
    ...
},
function fail() {
    ...
});

...

并且只有在禁用时才会收到该元素。如果您需要反向,则应该能够执行相应的:enabled

答案 1 :(得分:2)

您没有显示如何检索元素,但我假设您使用的是没有evaluate的casper API。您必须使用evaluate,因为disabled是DOM元素的属性,而现有的casper API仅提供检索属性的便捷函数:

function success() {
    var disabled = this.evaluate(function(selector){
        return !!document.querySelector(selector).disabled;
    }, "input#myid");
}

如果页面加载后元素未更改,您还可以使用getElementInfo

function success() {
    var disabled = !!this.getElementInfo("input#myid").attributes.disabled;
}

答案 2 :(得分:0)

怎么样?简单的同步,不引人注目。

var x = require('casper').selectXPath;

if (!casper.exists(x('//div[@class="item_size"]/input[@disabled]'))){ //!disabled
 xpath = '//div[@class="item_size"]//li[1]/label'
 var size = casper.fetchText(x(xpath)).trim();
 casper.echo(size);
 sizes.push(size)
}