From 8bf7c3b7b8886e9b44bacd8a85c7191988406aa7 Mon Sep 17 00:00:00 2001 From: Elbert Alias <77259+AliasIO@users.noreply.github.com> Date: Fri, 7 Jan 2022 14:35:57 +1100 Subject: [PATCH] Restart browser on target closed --- src/drivers/npm/driver.js | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/src/drivers/npm/driver.js b/src/drivers/npm/driver.js index 254dd65e7..14102ad02 100644 --- a/src/drivers/npm/driver.js +++ b/src/drivers/npm/driver.js @@ -476,12 +476,23 @@ class Site { if (!this.browser) { await this.initDriver() + if (!this.browser) { throw new Error('Browser closed') } } - const page = await this.browser.newPage() + let page + + try { + page = await this.browser.newPage() + } catch (error) { + this.error(error) + + await this.initDriver() + + page = await this.browser.newPage() + } this.pages.push(page) @@ -632,13 +643,19 @@ class Site { // page.on('console', (message) => this.log(message.text())) // Cookies - const cookies = (await page.cookies()).reduce( - (cookies, { name, value }) => ({ - ...cookies, - [name.toLowerCase()]: [value], - }), - {} - ) + let cookies = [] + + try { + cookies = (await page.cookies()).reduce( + (cookies, { name, value }) => ({ + ...cookies, + [name.toLowerCase()]: [value], + }), + {} + ) + } catch (error) { + this.error(error) + } // HTML let html = await this.promiseTimeout(page.content(), '', 'Timeout (html)') @@ -707,7 +724,7 @@ class Site { page.evaluateHandle( () => // eslint-disable-next-line unicorn/prefer-text-content - document.body.innerText // .replace(/\s+/g, ' ').slice(0, 25000) + document.body && document.body.innerText ), { jsonValue: () => '' }, 'Timeout (text)'