【问题标题】:angularJS Protractor e2e Testing TypeError: Object [object Object] has no method 'input'angularJS Protractor e2e 测试 TypeError: Object [object Object] has no method 'input'
【发布时间】:2014-07-02 20:35:57
【问题描述】:

我有一个有两个页面的应用程序...第一页是登录页面,其中有一个登录按钮...一旦用户单击此登录按钮,他们就会被重定向到 login.html...。两个输入。一个用于用户名,一个用于密码。

相关代码如下:

index.html

<a ui-sref="login" class="fa fa-sign-in" href="/login">&nbsp;Login</a>

和

login.html

<input type="text" id="username" name="username" placeholder="Username" ng-model="user.username" required="" autocomplete="off" class="ng-pristine ng-invalid ng-invalid-required">

<input type="password" name="password" placeholder="Password" ng-model="user.password" required="" autocomplete="off" class="ng-pristine ng-invalid ng-invalid-required">

在我的测试中,我首先单击登录按钮并检查我是否已正确重定向到新页面。这个测试通过了,但是当我尝试在这些输入框中输入时出现错误,就好像这些框不存在一样。我尝试让浏览器休眠,但也没有用。

// in test/e2e/main.spec.js
describe('E2E: main page', function(){

'use strict';

var ptor;


// keep track of the protractor instance
beforeEach(function(){
    browser.get('http://127.0.0.1:9000/');
    ptor = protractor.getInstance();
});

it('it should load the login page once the login button is clicked', function(){

    var link = element(by.css('.fa.fa-sign-in'))

    link.click();


    browser.sleep(4000);

    expect(ptor.getCurrentUrl()).toMatch(/\/login/);

    element(by.input('user.username')).sendKeys('test');
    element(by.input('user.password')).sendKeys('test');

});


});

有什么建议吗?

更新:

使用 by.model 而不是 by.input 有效,但我正在阅读的书说第一个也应该有效..奇怪。

【问题讨论】:

    标签: javascript angularjs protractor angularjs-e2e end-to-end


    【解决方案1】:

    by.input() 定位器已被弃用,您应该使用 by.model() 但是如果您真的需要,您可以定义自己的,例如:

    by.addLocator('input', function(model, opt_parentElement) {
      using = using || document;
      var prefixes = ['ng-', 'ng_', 'data-ng-', 'x-ng-', 'ng\\:'];
      for (var p = 0; p < prefixes.length; ++p) {
          var selector = 'input[' + prefixes[p] + 'model="' + model + '"]';
          var inputs = using.querySelectorAll(selector);
          if (inputs.length) {
              return inputs;
          }
       }
    });
    
    // To use the locator
    element(by.input('username')).sendKeys('test');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      相关资源
      最近更新 更多