мой сценарий выглядит следующим образом: 1. открыта страница Логин 2. введите имя пользователя, 3. введите пароль, 4. Нажмите кнопку Войти, 5. Роль выбора модальное открывается список возможных ролей пользователя. 6. нажмите на 1-ю роль.транспортир тест не нажав кнопку мой/элемент
Мой тест выглядит так:
'use strict';
describe('Login page', function() {
beforeEach(function() {
browser.get('/#/login');
});
it('should login', function() {
var _user = element(by.model('loginForm.exchange.user'));
var _pass = element(by.model('loginForm.exchange.password'));
var loginButton = element(by.xpath('/html/body/snap-content/ui-view/div/section/content/div/div/div[2]/div/form/button'));
_user.sendKeys('myUsername');
_pass.sendKeys('myPassword');
loginButton.click();
var _roleModal = by.className('modal-dialog');
browser.driver.wait(function() {
return browser.driver.isElementPresent(_roleModal);
}, 5000)
.then(function() {
browser.driver.sleep(3000);
console.log('modal now opened.');
var _elementInModal = by.css('[ng-click="cancel()"]');
browser.driver.wait(function() {
return browser.driver.isElementPresent(_elementInModal);
}, 1000)
.then(function() {
browser.driver.sleep(2000);
console.log('element present.');
// issue here being, I can't access the roles listed in modal, even though I've created a check if the button with cancel() exists in modal itself.
// using by.xpath('/html/body/div[5]/div/div/form/div/div/div/div/ul/li[1]') to fetch 1st role doesn't work either.
element.all(by.repeater('role in userRoles')).then(function (role) {
console.log('HUEY! ROLE!', role);
var titleElement = role[0].element(by.css('media-body'));
console.log(titleElement);
});
});
});
}, 30000);
});
Имейте в виду, когда речь идет о модальных, это бутстраповская модальный (https://angular-ui.github.io/bootstrap/).
шаблон Modal:
<div ng-switch-when="userRoles">
<div class="card">
<ul class="table-view" >
<li ng-repeat="role in userRoles" class="table-view-cell" ng-click="save(role)">
<a class="navigate-right">
<div class="media-body">
{{role.LTEXT}}
</div>
</a>
</li>
</ul>
</div>
</div>
Это сводит меня с ума в течение последних нескольких дней. Я просто не могу выбрать роли из существующих модальных. Даже если отладка с VSCode с помощью инструмента отладки узла, независимо от того, что я выбрал, я не могу ничего распечатать.
Есть ли ошибки? И только FYI, если вам нужен только первый элемент из этого метода .all, вы можете использовать функцию [.first()] (http://www.protractortest.org/#/api?view=ElementArrayFinder.prototype .), а не индексировать его. – Gunderson
Благодарим за комментирование. Я получаю ошибку таймаута после 31 секунд (как установлено в конце строки моего теста) – gregor
@gregor отмечает, что вы, вероятно, имели селектор CSS .media-body' вместо 'media-body'. – alecxe