49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
import { chromium } from 'playwright';
|
|
import log from 'electron-log';
|
|
|
|
const getOrCreateTab = async (context, targetIndex) => {
|
|
const idx =
|
|
Number.isFinite(targetIndex) && targetIndex >= 0 ? Math.floor(targetIndex) : 1;
|
|
|
|
let pages = await context.pages();
|
|
while (pages.length <= idx) {
|
|
await context.newPage();
|
|
pages = await context.pages();
|
|
}
|
|
const page = pages[idx];
|
|
await page.bringToFront();
|
|
return page;
|
|
};
|
|
|
|
(async () => {
|
|
const browser = await chromium.connectOverCDP('http://127.0.0.1:9222');
|
|
|
|
try {
|
|
const context = browser.contexts()[0];
|
|
if (!context) {
|
|
throw new Error('No browser context available');
|
|
}
|
|
|
|
await context.addInitScript(() => {
|
|
Object.defineProperty(navigator, 'webdriver', { get: () => undefined });
|
|
});
|
|
|
|
const tabIndex = Number(process.env.TAB_INDEX);
|
|
const page = await getOrCreateTab(context, tabIndex);
|
|
await page.goto('https://me.meituan.com/ebooking/merchant/product#/index');
|
|
} catch (error) {
|
|
log.error(error);
|
|
process.exitCode = 1;
|
|
} finally {
|
|
if (browser) {
|
|
try {
|
|
if (typeof browser.disconnect === 'function') {
|
|
await browser.disconnect();
|
|
} else {
|
|
await browser.close();
|
|
}
|
|
} catch {}
|
|
}
|
|
}
|
|
})();
|