Это расширение еще одной проблемы, с которой я столкнулся с asyn c конструктором, который я решил.
Весь приведенный ниже код работает правильно.
Вот пример класса с асин c конструктор сортов. Я знаю, что в JavaScript нет такого понятия, как конструктор asyn c.
class loginPage {
constructor(page) {
return (async () => {
this.singleElement = await page.$('.asd')
this.arrayOfElements = await page.$('.qwe')
return this
})()
}
}
module.exports = loginPage
Вот как я получаю доступ к элементам в конструкторе из другого файла.
const loginPage = async () => new (require('../loginPage.js'))(page)
Вот как я вызываю элементы, чтобы использовать их внутри функции asyn c.
(await loginPage()).singleElement
(await loginPage()).arrayOfElements[0]
Из-за асинхронности / ожидания я должен вызывать элементы как функции ().
Я хотел бы найти способ вызывать их как переменные.
Тогда мои вызовы элементов будут выглядеть так ->
await loginPage.singleElement
await loginPage.arrayOfElements[0]
Я знаю проблема в том, как я делаю строку «require».
Я попытался обернуть весь код в файле, как это ->
(async () => {
const loginPage = new (require('../loginPage.js')(page)
})()
, чтобы переместить асин c до уровня, чтобы я мог называть элементы переменными.
Казалось, что это работает, пока я не запустил код.
Я получаю ошибки, связанные с "(page)" он проходит через строку "require".
Кажется, он не проходит должным образом, "(page)" больше.
"(page)" оказывается неопределенным o r Ни один из методов, таких как «page. $», неизвестен.
Я также пытался переместить «new» обратно в файл класса.
Я просто не могу заставить это работать как переменная ???
Любые идентификаторы?