Страница куколкера не является стандартным экземпляром страницы кукловода, а отлично работает в браузереJavascript

Форум по Javascript
Ответить
Anonymous
 Страница куколкера не является стандартным экземпляром страницы кукловода, а отлично работает в браузере

Сообщение Anonymous »

Код: Выделить всё

import { configDotenv } from "dotenv";
import puppeteer from "puppeteer";

configDotenv({ path: "./config.env" });

let browserInstance;

export async function getBrowserInstance() {

try {
if (!browserInstance || !browserInstance.isConnected()) {
browserInstance = await puppeteer.launch({
// executablePath: process.env.CHROME,
headless: false,
args: [
'--disable-blink-features=AutomationControlled',
'--disable-infobars',
'--no-sandbox',
'--disable-dev-shm-usage',
'--start-maximized',
'--disable-extensions',
'--disable-default-apps',
'--disable-popup-blocking',
'--disable-renderer-backgrounding',
'--disable-background-timer-throttling',
'--disable-backgrounding-occluded-windows'
]
});

browserInstance.on('disconnected', () => {
console.error('Browser disconnected.');
browserInstance = undefined;
});
}

return browserInstance;
} catch (error) {
return error;
}
}

export async function newPage(browser, docSize) {
try {
if (!browser || !browser.isConnected()) throw new Error("Browser is not active!");

const page = await browser.newPage();
const { width, height } = docSize;

if (typeof width !== "number" || typeof height !== "number") {
throw new Error("The width and height of page should be type of number.");
}

await page.setUserAgent(process.env.USER_AGENT);
await page.evaluateOnNewDocument(() => {
Object.defineProperty(navigator, 'platform', {
get: () => 'Win32',
});
Object.defineProperty(navigator, 'webdriver', {
get: () => false,
});
window.chrome = {};
const originalQuery = window.navigator.permissions.query;
window.navigator.permissions.query = (parameters) =>
parameters.name === 'notifications'
? Promise.resolve({ state: 'denied' })
: originalQuery(parameters);
});
page.setDefaultNavigationTimeout(300000);
if (width && height) page.setViewport({ width, height });

return page;
} catch (error) {
return error.message;
}

}

export async function launchBrowserAndGotoPage(docSize, docUrl) {
let Browser, Page;
try {
Browser = await getBrowserInstance();
Page = await newPage(Browser, docSize);

console.log()

if (typeof Page === "string") throw new Error(Page);
const pageResponse = await Page.goto(docUrl, { waitUntil: "networkidle0" });
const pageStatus = pageResponse.status();
if (pageStatus !== 200) {
throw new Error(`The third-party server responded with ${pageStatus}`);
}

console.log("I am inside launchBrowserAndGotoPage ", Page)
console.log("Page type: ", Page.constructor.name) // Should print "Page"
console.log("Page object keys: ", Object.keys(Page)) // Explore what properties/methods are available

return { Browser, Page };
} catch (error) {
console.log(error);
if (typeof Page === "object") Page.close();
return { error: error.message }
}
}
Когда я вызываю launchBrowserAndGotoPage(), запускается браузер и открывается страница с предоставленной ссылкой. Но объект неполный, и я не могу использовать такие методы, как page.pdf().
Журналы такие:
I am inside launchBrowserAndGotoPage CdpPage { _isDragging: false, _timeoutSettings: TimeoutSettings {} }
Page type: CdpPage
Page object keys: [ '_isDragging', '_timeoutSettings' ]
< /code>
может кто -нибудь помочь мне решить эту проблему? ответ такой же.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ine-in-bro
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»