在量角器中启用 ng-show 值为 true
Posted
技术标签:
【中文标题】在量角器中启用 ng-show 值为 true【英文标题】:enable ng-show value as true in protractor 【发布时间】:2017-05-30 10:33:38 【问题描述】:在 spec.js 中,我用全名、电子邮件和联系电话为注册编写了量角器测试。如果用户注册成功,则 ng-show 值为 true,并且 div 将显示注册成功消息。
signup.html div 显示成功信息:
<div class="form-success-forgot" ng-show="isSignedUp">
<h5>
<strong><span ng-bind="signedUpSuccessMessage"></span></strong>
</h5>
</div>
Spec.js
describe('Test signup ', function()
var fullname=element(by.model('fullName'));
var email= element(by.model('email'));
var cntNo= element(by.model('contactNo'));
var signup= element(by.css("button[type='submit']"));
var isSignup=element(by.css('.form-success-forgot'));
beforeEach(function()
);
it('signup success', function()
browser.get('http://localhost/signup');
fullname.sendKeys('test user');
email.sendKeys('testuser_01@yopmail.com');
cntNo.sendKeys('123-456-7890');
expect(isSignup.isEnabled()).toBe(true);
signup.click();
expect(isSignup.isEnabled()).toBe(false);
element(by.binding('signedUpSuccessMessage')).sendKeys('Thanks for signing up');
//element(by.css("form-success-forgot")).sendKeys(true);
);
);
但是得到错误堆栈为
Message:
Expected true to be false.
Stack:
Error: Failed expectation
at Object.<anonymous> (C:\Users\AppData\Roaming\npm\node_modules
\protractor\example\example_spec.js:20:31)
at C:\Users\AppData\Roaming\npm\node_modules\protractor\node_mod
ules\jasminewd2\index.js:112:25
at new ManagedPromise (C:\Users\AppData\Roaming\npm\node_modules
\protractor\node_modules\selenium-webdriver\lib\promise.js:1067:7)
at ControlFlow.promise (C:\Users\AppData\Roaming\npm\node_module
s\protractor\node_modules\selenium-webdriver\lib\promise.js:2396:12)
at schedulerExecute (C:\Users\AppData\Roaming\npm\node_modules\p
rotractor\node_modules\jasminewd2\index.js:95:18)
at TaskQueue.execute_ (C:\Users\AppData\Roaming\npm\node_modules
\protractor\node_modules\selenium-webdriver\lib\promise.js:2970:14)
at TaskQueue.executeNext_ (C:\Users\AppData\Roaming\npm\node_mod
ules\protractor\node_modules\selenium-webdriver\lib\promise.js:2953:27)
at asyncRun (C:\Users\AppData\Roaming\npm\node_modules\protracto
r\node_modules\selenium-webdriver\lib\promise.js:2860:25)
at C:\Users\AppData\Roaming\npm\node_modules\protractor\node_mod
ules\selenium-webdriver\lib\promise.js:676:7
Message:
Failed: element not visible
(Session info: chrome=58.0.3029.110)
(Driver info: chromedriver=2.29.461591 (62ebf098771772160f391d75e589dc5679
15b233),platform=Windows NT 6.3.9600 x86_64)
如何启用或设置 ng-show 值为 true 以使 div 元素可见?
【问题讨论】:
【参考方案1】:据我在代码中看到的,您使用了错误的检查。 isEnabled 仅用于检查是否启用了 input
,由 disabled 属性决定。
我认为你需要的是isDisplayed 或isPresent。
请注意isPresent()
检查元素是否存在于 DOM 中(不显示是否显示)和 isDisplayed()
检查元素是否存在于 DOM 中并且可见的区别在页面上。
希望对你有帮助
【讨论】:
按钮上有css动画吗?如果你做一个browser.sleep(3000)
,只是为了检查
即使isDisplayed()
也不起作用。得到同样的错误。
不@wswebcreation
您是否有一个示例项目,其中包含您要测试的设置和站点?以上是关于在量角器中启用 ng-show 值为 true的主要内容,如果未能解决你的问题,请参考以下文章
protractor - 启动 chrome 以禁用 cors 的网络安全