Использование пользовательских функций с "I" в объекте страницы и пользовательский помощник в CodeceptJS

Привет, сообщество CodeceptJS,

  • Есть ли способ использовать пользовательские функции (в файле steps_file.js) как I. customFunction() в объектных файлах страницы.

  • Есть ли способ использовать встроенные функции codeceptjs (например, I.click ()) в моих пользовательских вспомогательных файлах

Я не смог найти никакой помощи в документации и других источниках. Есть ли способ добиться этого?

  • И есть ли способ использовать локаторы xpath в помощнике кукловода?

    this.helpers [ 'Кукловод'] page.click(XPath).

2 ответа

У меня была та же проблема с использованием пользовательских шагов в pageObjects. Чтобы избежать этого, я передал actor (I) в качестве параметра моей функции pageObject.

объект страницы:

const I = actor();

       module.exports = {

           doSomething(I){
                 I.login();
           }
};

Тестовый сценарий:

Scenario('Test something' (I,pageObject)=>{
     pageObject.doSomething(I)
})

В этом случае pageObjects будет иметь доступ ко всем пользовательским шагам из I:)

Я столкнулся с той же проблемой, и когда я посмотрел определения шрифтов, я заметил, что actor() который требуется в каждом объекте страницы и т. д. имеет аргументы пользовательских шагов.

Так что это сработало для меня, чтобы продлить const I = actor(); с пользовательскими шагами формы steps_file.js;

const customSteps = require('./steps_file');
const I = actor(customSteps());

После этого я могу использовать все методы в объектах страницы, как в тестовых сценариях, которые обращаются к методам из steps_file.js

Спасибо, что поделились Матеус. Я использовал другое решение. Вместо того, чтобы писать объект "I" в каждом методе объекта страницы (который также был для меня одним из вариантов), я создал собственный файл помощника и написал все методы, используя вспомогательный метод кукловода, как показано ниже;

async method() {
    await this.helpers['Puppeteer'].click(xpath);
}

Я могу вызвать этот метод как в тестах, так и в объектах страницы.

I.method();
Другие вопросы по тегам