Сначала вы должны создать объект, у которого есть метод для каждого действия, которое вы хотите выполнить / протестировать на странице. Начните с простого и повторяйте по мере разработки своего кода. Для вас что-то подобное может работать как Page Object:
var LoginPage = function() {
var nameInput = element(by.id('ctrlLogin_UserName'));
var PasswordInput = element(by.id('ctrlLogin_Password'));
var LoginButton = element(by.id('ctrlLogin_LoginButton'));
this.get = function() {
browser.get('http://some-login-page.com');
};
this.setName = function(name) {
nameInput.sendKeys(name);
};
this.setPassword = function(password) {
PasswordInput.sendKeys(password);
};
this.submitLogin = function() {
LoginButton.click();
};
};
module.exports = new LoginPage();
, например, вы можете добавить дополнительный метод, который называется login
и принимает как имя пользователя, так и пароль, вызывает себя setName
setPassword
и submitLogin
После создания объекта Page вы просто используете его в своем тесте:
var LoginPage = require('./LoginPage');
describe('Test suite to check the login', function(){
it('Check the browswer', function(){
browser.waitForAngularEnabled(false)
LoginPage.get();
LoginPage.setName('valid-login');
LoginPage.setPassword('valid-password');
LoginPage.submitLogin();
});
})
, если у вас есть дополнительный login()
метод в вашем объекте страницы, вы можете -course используйте его в тесте и сократите количество строк кода.
Теперь везде в ваших тестах, где вы хотите войти, вы можете использовать новый приятный уровень абстракции объектов страницы. Если ваши идентификаторы элементов меняются, есть только одно место, чтобы изменить их. Жизнь стала проще; -)
PS подробности см. В документации к транспортиру: https://github.com/angular/protractor/blob/master/docs/page-objects.md (я бессовестно украл мои примеры)