量角器找不到类值

时间:2016-05-23 09:15:14

标签: selenium protractor

我正在尝试设置一个简单的量角器测试,但出于某种原因我得到了错误:

  

NoSuchElementerror:找不到使用定位器的元素:By(css selector,btn-primary3)

这是我正在运行的测试,

describe('Login to **: ', function () {
    describe('When logging in with faulty data', function () {
        it('Should show an error toast', function () {
            browser.get('https://peter.dev.zen/#/inloggen');
            element(by.model('credentials.Gebruikersnaam')).sendKeys('JonSnow');
            element(by.model('credentials.Wachtwoord')).sendKeys('WinterIsComming');

            element(by.css('btn-primary3')).click();
        });
    });
});

这是浏览器中的html,

<fieldset>
    <div class="text-input">
        <label for="username"> Gebruikersnaam </label>
        <input data-ng-model="credentials.Gebruikersnaam">
    </div>
    <div class="text-input>
        <label for="password"> Wachtwoord </label>
        <input data-ng-model="credentials.Wachtwoord">
     </div>
    <div class="buttons">
        <a class="btn-primary3">Inloggen</a>
    </div>
< /fieldset>

by.model都可以正常工作,但

element(by.css('btn-primary3')).click();

引发错误,但该类正好在浏览器中。出了什么问题?

1 个答案:

答案 0 :(得分:1)

已通过https://github.com/angular/protractor/blob/master/spec/basic/elements_spec.js

找到了答案

问题在于,如果你执行by.css(body),它会搜索body元素。如果你执行by.css(.body),它会搜索具有类名称主体的元素。

it('should allow accessing subelements from within each', function() {
  browser.get('index.html#/form');
  var rows = element.all(by.css('.rowlike'));

  rows.each(function(row) {
    var input = row.element(by.css('.input'));
    expect(input.getAttribute('value')).toEqual('10');
  });

  rows.each(function(row) {
    var input = row.element(by.css('input'));
    expect(input.getAttribute('value')).toEqual('10');
  });
});