使用Protractor通过className定位按钮

r3x*_*r3x 12 javascript jasmine angularjs protractor

如果这是一个新手问题我很抱歉,刚开始进行网络自动化测试.

我想测试登录屏幕页面.查找名称和密码文本字段很简单(仅由.model使用),但是我在使用我的脚本找到登录按钮时遇到问题.

我google了,我应该能够通过className使用element(by.css(.className))找到一个元素,但是这无法工作,我总是得到 NoSuchElementError: No element found using locator: By.cssSelector(".btn btn-lg btn-primary btn-block").

知道我做错了什么吗?

提前谢谢你,

LoginBtn HTML:

<button class="btn btn-lg btn-primary btn-block" type="submit" ng-disabled="loading">login</button>
Run Code Online (Sandbox Code Playgroud)

我的代码:

describe('Test login', function() {
  var username = element(by.model('formData.email'));
  var password = element(by.model('formData.password'));
  var loginBtn = element(by.css('.btn btn-lg btn-primary btn-block'));


  beforeEach(function() {
    browser.get('some site'); //hidden on purpose
  });

  it('should have a title', function() {
        username.sendKeys(1);
        password.sendKeys(2);
        loginBtn.click();


  });


});
Run Code Online (Sandbox Code Playgroud)

ale*_*cxe 20

如果要检查多个类,请用点分隔它们:

by.css('.btn.btn-lg.btn-primary.btn-block')
Run Code Online (Sandbox Code Playgroud)

虽然,我会按文字找到按钮 - 看起来更可靠和可读:

by.xpath('//button[. = "login"]')
Run Code Online (Sandbox Code Playgroud)

另外,考虑分配按钮id(如果这是在您的控制之下)属性以简化测试过程:

<button id="submitButton" class="btn btn-lg btn-primary btn-block" type="submit" ng-disabled="loading">login</button>
Run Code Online (Sandbox Code Playgroud)

然后,它会像以下一样简单:

by.id('submitButton')
Run Code Online (Sandbox Code Playgroud)