Javascript DOM中的hasAttribute工作不正常
我在tect.html文件中有此表单,我想测试按钮是否被禁用: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
我认为按钮元素上不存在属性[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);
});