Использование пользовательских функций с "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();