我有这种形式在tect.html文件,我想如果按钮被禁用或不进行测试:
<button id="ref_button"....[disabled]="editForm.form.invalid || isSaving" class="btn btn-primary">
我用的量角器,黄瓜和柴DOM如果当表单数据无效禁用此按钮进行测试,所以我检查其属性,这样的禁用:
JSDOM.fromFile("file.html").then(dom => { dom.window.document.getElementById("ref_button").has.attr('disabled').should.be.true; }); });
现在测试失败,因为它总是发现禁用的属性,当按钮被禁用或没有,当的数据都是有效。
我究竟做错了什么?
我认为属性[disabled]
没有按钮元素上存在(这就是为什么它总是如此)。 它的属性disabled
,你必须寻找(不含[
和]
标记。它绑定语法。
所以,思考它的时候,这应该工作:(没有测试...)
dom.window.document.getElementById("ref_button").should.not.have.attr("disabled");
但可能这将始终输出false
,因为一个按钮确实有属性。 为了使这一工作始终你应该采取的值disabled
属性,并检查wheter这是真的。
dom.window.document.getElementById("ref_button").getAttribute("disabled").toBeTruethy().
其实我不知道,如果toBeTruethy()
在湾仔确实存在,但在这里我要说的是,你应该检查一个属性的值,而不是只是如果属性一般的存在。
另一件事更何况是这样的:
element(by.css("*[id='field_nombre']")).click();
element(by.css("*[id='field_nombre']")).sendKeys('').then(callback);
我猜click()
也是一个异步函数,并在上面的例子中键之前发送click()
已经完成它的执行。 这是正确的,我认为:
element(by.css("*[id='field_nombre']")).click().then(function() {
element(by.css("*[id='field_nombre']")).sendKeys('').then(callback);
});
对于angularJs,你应该使用指令ng-disabled
在HTML
从官方文档 :
因为我们不能使用禁用的属性里面插一个特殊的指令是必要的。 见插值指南获取更多信息。