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

How to check whether a text input is disabled in Casper.js?

本文关键字:是否 输入 文本 js 何检查 检查 Casper      更新时间:2023-09-26

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

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

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

我不完全确定 Casper.js 是否支持这一点,但您应该能够在选择器中使用 :disabled 伪类,让 DOM 为您处理它。

如果工作正常,您的代码将变为:

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

并且只有在元素被禁用时,您才会收到该元素。如果您需要相反,则有相应的:enabled应该能够做到这一点。

您没有显示如何检索元素,但我假设您在没有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;
}
这是

怎么回事。 简单的同步,不显眼。

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