Объектная модель страницы кукловода с браузером и страницей, отделенной от основной - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь поместить в класс вызов кукловода, объект браузера и объект страницы.Но я не могу использовать его при использовании объектной модели страницы.Члены страницы не определены.

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

Но возможно архивировать то, что я ищу, и при этом иметь возможность использовать хотя бы объект страницы в объектных файлах страницы?

main.mjs

import Browser from './browser.mjs'
import HomePage from './HomePage.mjs'

async function main () {
    const browser = new Browser();
    const homePage = new HomePage(browser.page);
    await homePage.open();
    console.log(await homepage.getTitle());
    await browser.close();
}
main();

browser.mjs

class Browser {
    constructor() {
        return this.main(); // I know, that's ugly
    }

    async main() {
        this.browser = await puppeteer.launch({
            headless: false,
        });

        this.page = await browser.newPage();
        return this.browser,this.page
    }
}

export default Browser

homepage.mjs

class HomePage {
    constructor(page) {
        this.page = page;
    }

    async open() {
        this.page.goto('http://www.contoso.com');
    }

    async getTitle() {
        return this.page.title();
    }
}

export default HomePage

1 Ответ

0 голосов
/ 16 апреля 2019
return this.browser,this.page

Возвращает browser.Если вы хотите получить доступ к браузеру и странице, вы должны вернуть только this.Ваш код должен выглядеть следующим образом.

return this

Вы можете получить доступ к браузеру, странице и всему, что находится между этим объектом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...