Files
portal/app/scripts/render-firm.cjs
T

34 lines
1.2 KiB
JavaScript
Raw Normal View History

// Usage: node render-firm.cjs <url>
// Открывает карточку справочника, жмёт «Показать телефон(ы)», печатает JSON { html }.
const { chromium } = require('playwright');
(async () => {
const url = process.argv[2];
let parsed;
try {
parsed = new URL(url);
} catch (e) {
console.error('bad url');
process.exit(2);
}
if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
console.error('bad scheme');
process.exit(2);
}
const browser = await chromium.launch({ headless: true });
try {
const page = await browser.newPage();
await page.goto(url, { waitUntil: 'networkidle', timeout: 30000 });
// нажать кнопку раскрытия телефона, если есть
try {
const btn = page.getByText(/Показать телефон/i).first();
await btn.click({ timeout: 4000 });
await page.waitForTimeout(700);
} catch (e) { /* кнопки нет — номер уже виден */ }
const html = await page.content();
process.stdout.write(JSON.stringify({ html }));
} finally {
await browser.close();
}
})().catch(e => { console.error(String(e)); process.exit(1); });