Возможности браузера в описании спецификации в Protractor Jasmine

1

Я хочу создать два отдельных отчета для одного теста. Для этого я использую метод browser.getCapabitities в тесте, по которому я получаю имя и версию браузера.

Теперь, когда я использую эту переменную в конце описания спецификации, значение не undefined. browserNameforSpec получает значение перед описанием. Только когда я использую это значение в конце спецификации, оно показывает неопределенное. Я не могу понять причину, по которой это происходит. Есть ли способ изменить имя этого описания спецификации перед началом теста.

Мой код

let capsPromise = browser.getCapabilities();
let browserNameforSpec;
capsPromise.then(function(caps) {
    console.log(caps);
    let browserName = caps.get('browserName');
    let browserVersion = caps.get('version');
    browserNameforSpec = browserName + '-' + browserVersion + '-';
    console.log(browserNameforSpec);

});

describe( '0030 Test for login' + browserNameforSpec, function () { // this.browserNameforSpec value is undefined

    // 1.
    it('Navigate to the login page', async () => {
        await navigate.to.the(loginPage);
    });

    // 2
    it('Click onto language button', async() => {
        await click.onto(languageButton);
        await expect(languageDropdown.isDisplayed());
    });

    // 3
    it('English Language is selected', async() => {    
        await click.onto(englishLanguage);
        await expect(languageButton.getText()).toBe('English');
    });

    // 4.
    it('Correct user name is written into email field', async() => {
        await usernameField.click();
        await enter(correctUsername, into(usernameField));    
    });

    // 5.
    it('Correct password is written into password field', async() => {
            await passwordField.click().then(function () {
                passwordField.clear();
                enter(correctPassword, into(passwordField));
            })    
    });

    // 6.
    it('Login button is clicked and home page is opened', async() => {
        await click.onto(loginButton);
    });    
});
Теги:
angular
protractor
jasmine

2 ответа

1

Добавьте приведенный ниже код в свой onPrepare()

browser.getCapabilities().then(function (cap) {
  browser.browserName = cap.caps_.browserName;
});

Вы звоните в своем тесте, как показано ниже

describe( '0030 Test for login' + browser.browserName, function () {

    // 1.
    it('Navigate to the login page', async () => {
        await navigate.to.the(loginPage);
    });

Надеюсь, это поможет вам..

  • 0
    Я получаю эту ошибку для первой строки TypeError: Невозможно прочитать свойство 'browserName' из неопределенного
1

Проблема: 1. Вы используете this.browserNameforSpec, который будет неопределенным при изменении контекста функции. Вы объявили browserNameforSpec как переменную, которая непосредственно доступна во всех функциях, но вы вызываете это). 2. browser.getCapabilities() возвращая экземпляр Promise, поэтому поток выполнения отличается. Сначала выполняется эта функция и описать(). Но. они должны быть вызваны синхронно.

Ниже код использует другой.hen для последовательного выполнения. Попробуйте использовать приведенный ниже код:

let capsPromise = browser.getCapabilities();
let browserNameforSpec;

capsPromise
    .then(function(caps) {
        console.log(caps);
        let browserName = caps.get('browserName');
        let browserVersion = caps.get('version');
        browserNameforSpec = browserName + '-' + browserVersion + '-';
        console.log(browserNameforSpec);

    })
    .then(function() {
        describe( '0030 Test for login' + browserNameforSpec, function () {

            // 1.
            it('Navigate to the login page', async () => {
                await navigate.to.the(loginPage);
            });

            // 2
            it('Click onto language button', async() => {
                await click.onto(languageButton);
                await expect(languageDropdown.isDisplayed());
            });

            // 3
            it('English Language is selected', async() => {

                await click.onto(englishLanguage);
                await expect(languageButton.getText()).toBe('English');
            });

            // 4.
            it('Correct user name is written into email field', async() => {
                await usernameField.click();
                await enter(correctUsername, into(usernameField));

            });

            // 5.
            it('Correct password is written into password field', async() => {
                    await passwordField.click().then(function () {
                        passwordField.clear();
                        enter(correctPassword, into(passwordField));
                    })

            });

            // 6.
            it('Login button is clicked and home page is opened', async() => {
                await click.onto(loginButton);
            });
        });
    });
  • 0
    Значение по-прежнему не определено. вот результат 1. 0030 Тест на корректный вход в систему не определен [chrome # 01]
  • 0
    Проверьте обновленный код
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню