Как реализовать Open Page Model в JavaScript - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь реализовать объектную модель страницы для моей страницы входа.

conf. js

exports.config={
    seleniumAddress:'http://localhost:4444/wd/hub/',
    specs: ['spec.js']
}

spe c. js

* Пакет 1007 *

. json

  "name": "automation",
  "version": "1.0.0",
  "description": "My first automation project",
  "main": "conf.js",
  "dependencies": {
    "jasmine": "^3.5.0",
    "protractor": "^5.4.3"
  },

Итак, я могу знать, как реализовать объектную модель страницы на этой странице входа? Спасибо!

1 Ответ

2 голосов
/ 14 апреля 2020

Сначала вы должны создать объект, у которого есть метод для каждого действия, которое вы хотите выполнить / протестировать на странице. Начните с простого и повторяйте по мере разработки своего кода. Для вас что-то подобное может работать как 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 (я бессовестно украл мои примеры)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...