Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript DOM中的hasAttribute工作不正常_Javascript_Html_Angularjs_Testing_Protractor - Fatal编程技术网

Javascript DOM中的hasAttribute工作不正常

Javascript DOM中的hasAttribute工作不正常,javascript,html,angularjs,testing,protractor,Javascript,Html,Angularjs,Testing,Protractor,我在tect.html文件中有此表单,我想测试按钮是否被禁用: 我认为按钮元素上不存在属性[disabled](这就是为什么它总是正确的原因)。它是您必须查找的属性disabled(不带[和]标记)。它是绑定语法 所以当考虑它时,这应该是有效的:(没有测试…) 但这可能会始终输出false,因为按钮确实具有该属性。要使此操作始终有效,您应该获取disabled属性的值,并检查其是否为真 dom.window.document.getElementById("ref_button").getAt

我在tect.html文件中有此表单,我想测试按钮是否被禁用:


我认为按钮元素上不存在属性
[disabled]
(这就是为什么它总是正确的原因)。它是您必须查找的属性
disabled
(不带
[
]
标记)。它是绑定语法

所以当考虑它时,这应该是有效的:(没有测试…)

但这可能会始终输出
false
,因为按钮确实具有该属性。要使此操作始终有效,您应该获取
disabled
属性的值,并检查其是否为真

dom.window.document.getElementById("ref_button").getAttribute("disabled").toBeTruethy().
实际上,我不知道chai中是否存在
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,应该在html中使用指令
ng disabled

来自官方:

因为我们不能使用插值,所以需要一个特殊指令 在禁用属性内。有关详细信息,请参阅插值指南 信息


Yell,yess为了回答您的疑问,当数据有效和无效时,它永远不会找到'disabled',但在这两种情况下都只找到['disabled'],关于
元素(by.css('ref_button').isEnabled()。然后(函数(isEnabled){/*在这里验证它应该是真的还是假的…*/})
?我忘记了该函数,但它应该准确地检查您想要检查的内容。根据您对该函数是否异步的怀疑,我在测试期间看到执行的步骤并在浏览器中发送正确的数据,这是完美的。根据建议dom.window.document.getElementById(“ref_按钮”).hasAttribute('disabled'))我修改了我的问题
element(by.css("*[id='field_nombre']")).click().then(function() {
  element(by.css("*[id='field_nombre']")).sendKeys('').then(callback);
});