我正在尝试设置一个简单的量角器测试,但出于某种原因我得到了错误:
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();
引发错误,但该类正好在浏览器中。出了什么问题?
答案 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');
});
});