如何检查 Casper.js 中的文本输入是否被禁用?
How to check whether a text input is disabled in Casper.js?
我正在编写 Casper.js 测试。我需要检查输入字段是否为 disabled
。
casper.waitForSelector("input[id='myid']",
function success() {
...
},
function fail() {
...
});
...
检索字段不是问题,但是禁用测试呢?
我不完全确定 Casper.js 是否支持此功能,但您应该能够在选择器中使用 :disabled
pseudo-class 并让 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)
}
我正在编写 Casper.js 测试。我需要检查输入字段是否为 disabled
。
casper.waitForSelector("input[id='myid']",
function success() {
...
},
function fail() {
...
});
...
检索字段不是问题,但是禁用测试呢?
我不完全确定 Casper.js 是否支持此功能,但您应该能够在选择器中使用 :disabled
pseudo-class 并让 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)
}