Использование пользовательских функций с «I» в объекте страницы и настраиваемый помощник в CodeceptJS - PullRequest
0 голосов
/ 06 октября 2018

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

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

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

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

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

    this.helpers ['Puppeteer']. Page.щелкните (xpath);

Ответы [ 3 ]

0 голосов
/ 19 октября 2018

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

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

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

I.method();
0 голосов
/ 13 марта 2019

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

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

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

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

0 голосов
/ 17 октября 2018

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

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

const I = actor();

       module.exports = {

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

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

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

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

...