2024-09-09 18:07:22 +08:00
|
|
|
import { PuppeteerWebPage } from '@/puppeteer';
|
2025-01-26 16:49:32 +08:00
|
|
|
import { launchPuppeteerPage } from '@/puppeteer/agent-launcher';
|
|
|
|
import type { Viewport } from 'puppeteer';
|
2024-07-28 08:49:57 +08:00
|
|
|
|
|
|
|
export async function launchPage(
|
|
|
|
url: string,
|
|
|
|
opt?: {
|
|
|
|
viewport?: Viewport;
|
2024-08-26 11:08:50 +08:00
|
|
|
headless?: boolean;
|
2024-07-28 08:49:57 +08:00
|
|
|
},
|
|
|
|
) {
|
2025-01-26 16:49:32 +08:00
|
|
|
const { page, freeFn } = await launchPuppeteerPage(
|
|
|
|
{
|
|
|
|
url,
|
|
|
|
viewportWidth: opt?.viewport?.width,
|
|
|
|
viewportHeight: opt?.viewport?.height,
|
|
|
|
viewportScale: opt?.viewport?.deviceScaleFactor,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
headed: typeof opt?.headless === 'boolean' ? !opt.headless : false,
|
|
|
|
},
|
2024-12-08 20:12:17 +08:00
|
|
|
);
|
2025-01-26 16:49:32 +08:00
|
|
|
|
|
|
|
const originPage = page;
|
|
|
|
const midscenePage = new PuppeteerWebPage(originPage);
|
2024-07-28 08:49:57 +08:00
|
|
|
|
2024-08-21 17:24:32 +08:00
|
|
|
return {
|
2025-01-26 16:49:32 +08:00
|
|
|
page: midscenePage,
|
2024-09-29 17:16:07 +08:00
|
|
|
originPage,
|
2024-08-21 17:24:32 +08:00
|
|
|
reset: async () => {
|
2025-01-26 16:49:32 +08:00
|
|
|
for (const fn of freeFn) {
|
|
|
|
await fn.fn();
|
|
|
|
}
|
2024-08-21 17:24:32 +08:00
|
|
|
},
|
|
|
|
};
|
2024-07-28 08:49:57 +08:00
|
|
|
}
|