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

Я использую codeceptjs с кукловодом.

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

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

Поскольку у Puppeteer есть вспомогательный файл в codecptjs, я не просто хочу, чтобы const снова требовал puppeteer, я бы предпочел просто направить запрос помощнику.

let match ='';
        const targetEls = await page.$$('#element');
        for(let target of targetEls)
        {
            const cell_content = await page.evaluate(el => el.innerHTML, target);
            let county = (cell_content.match(/string_to_match/g) || []).length;
            if(county === 2)
            {
                match = cell_content.match(/http:\/\/(\w*)\.(\w*)\/(\w*)\/(\d*)/gi).pop(); // searches for url within element info and pop it out.
                break;
            }
        }

Проблема, с которой я столкнулся, заключается в том, что await page.evaluate(el.innerHTML, target) не работает с codeceptjs, поскольку я не создал экземпляр кукловода в моем коде шагов. Однако он находится внутри кукловода helper.js


person Daniel    schedule 08.07.2019    source источник


Ответы (1)


Не уверен, что ты хочешь. Опишите, пожалуйста, где находится код из вопроса.

page не описан глобально, вы можете получить к нему доступ, используя объект page помощника Puppeteer.

Похоже, вы хотите создать метод в своем пользовательском помощнике, где доступ к помощнику кукловода используется для получения его browser значения , как описано в в документе помощников Puppeteer:

const currentPage = this.helpers['Puppeteer'].page;
await currentPage.$$('#element'); // Get the url of the current page

Итак, ваш помощник будет включать метод, который вы описали в вопросе, и вы можете вызвать его из test.

person Evgeny Lukoyanov    schedule 08.07.2019
comment
Привет, Евгений! Большое спасибо, это именно то, что я искал. - person Daniel; 09.07.2019