在量角器中启用 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的主要内容,如果未能解决你的问题,请参考以下文章

angular-控制视图显示隐藏

如何不忘记再次将量角器转换为角度同步?

protractor - 启动 chrome 以禁用 cors 的网络安全

ng-show无法处理窗口滚动

ng-hide / ng-show 中是不是可以使用复杂的表达式?

在ng-show上使用大于运算符