Javascript - Как читать элементы функции из цикла for - PullRequest
0 голосов
/ 09 марта 2020

Итак, я пытался реорганизовать свой код с самого начала, и теперь я подошел к части, где он выглядит довольно аккуратно, но падает, когда речь заходит о получении различных элементов из функций.

Мой скрипт начинается с:

const DetailsPage = require('../tests/detailsPageObj');

describe('Details page', function () {
    detailsPage = new DetailsPage();

    // The details page is accessible by the specified URL
    it(`Is defined by the URL: ${userData.url}`, async function () {
        await detailsPage.navigate();
    });

    // Details page has a form and it can be filled out with user data
    it('Has a form that can receive user data', async function () {
        await detailsPage.fillFormWithUserData(); // Stops here
    });

});

и читается с:

module.exports = class DetailsPage {
    pageUtils = {
        qtyRegex: /^Sorry.*?(\d+)/
    };

    constructor() {
        const _fields = {
            email: element(by.id('email')),
            firstName: element(by.id('firstName')),
            lastName: element(by.id('lastName')),
            postalCode: element(by.id('postalCode')),
            addressOne: element(by.id('addressOne')),
            addressTwo: element(by.id('addressTwo')),
            phone: element(by.id('phone')),
            businessCustomerCB: element(by.id('isBusinessCustomer')),
            company: element(by.id('company')),
            GST: element(by.id('gst')),
        };

        this.getFields = function () { return _fields };
    }

    getForm() {

        return {
            fields: this.getFields,
            groups: this.getGroups,
            buttons: this.getFormButtons,
            modals: this.getModals
        }
    }

    async navigate() {
        await browser.waitForAngularEnabled(false)
        await browser.manage().window().maximize()
        await browser.get("helloworld.com")
    }

    async fillFormWithUserData() {
        const formFields = this.getForm().fields;

        for (const fieldKey in formFields) {
            const formField = formFields[fieldKey];
            await utils.presenceOf(formField);
            if (fieldKey === 'businessCustomerCB') {
                await utils.click(formField);
            } else {
                await utils.sendKeys(formField, userData[fieldKey])
            }
        }
    }

}

Моя проблема, с которой я сталкиваюсь:

  1) Details page
       Has a form that can receive user data:
     TypeError: Cannot read property 'getWebElement' of undefined
      at utils.click (utils\utils.js:18:70)
      at Context.<anonymous> (pagesDesktop\detailsPage.js:20:21)
      at processTicksAndRejections (internal/process/task_queues.js:93:5)

, которая, по моему мнению, дает сбой из-за:

asyn c fillFormWithUserData () {

    const formFields = this.getForm().fields;

    for (const fieldKey in formFields) {
        const formField = formFields[fieldKey];
        await utils.presenceOf(formField);
        if (fieldKey === 'businessCustomerCB') {
            await utils.click(formField);
        } else {
            await utils.sendKeys(formField, userData[fieldKey])
        }
    }
}

, и причина этого в том, что когда я печатаю console.log(formFields), он просто печатает [Function], и я также пытался распечатать console.log(fieldKey) внутри для l oop, но он ничего не распечатывает, и я считаю, что он не читает

    const _fields = {
        email: element(by.id('email')),
        firstName: element(by.id('firstName')),
        lastName: element(by.id('lastName')),
        postalCode: element(by.id('postalCode')),
        addressOne: element(by.id('addressOne')),
        addressTwo: element(by.id('addressTwo')),
        phone: element(by.id('phone')),
        businessCustomerCB: element(by.id('isBusinessCustomer')),
        company: element(by.id('company')),
        GST: element(by.id('gst')),
    };

правильно, потому что я предполагаю, что он должен был распечатать эти вещи как минимум?

У меня вопрос, как я могу заставить свой скрипт читать эти значения и вводить, посылая ключи?

РЕДАКТИРОВАТЬ:

Мне также жаль мой английский sh также. Мне трудно найти правильные слова в названии, и если кто-то, возможно, захочет помочь мне улучшить мой заголовок, я также буду признателен за это!

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