47 lines
1.7 KiB
JavaScript
47 lines
1.7 KiB
JavaScript
// 验证修复后 iframe 尺寸非 0,且打印内容完整
|
|
import { createRequire } from 'module'
|
|
import fs from 'fs'
|
|
|
|
const PW = 'C:/Users/范先生/AppData/Roaming/npm/node_modules/@playwright/cli/node_modules/playwright-core'
|
|
const require = createRequire(PW + '/package.json')
|
|
const { chromium } = require(PW)
|
|
|
|
const B = 'http://localhost:5136'
|
|
const token = fs.readFileSync(new URL('_token.txt', import.meta.url), 'utf8').trim()
|
|
const url = `http://localhost:5227/?print=1&template=2&table=RawMaterial_OutStock&row=2&token=${encodeURIComponent(token)}&api=${B}`
|
|
|
|
const browser = await chromium.launch({ headless: true, channel: 'msedge' })
|
|
const page = await browser.newPage()
|
|
page.on('pageerror', (e) => console.log('[pageerror]', e.message))
|
|
page.on('console', (m) => { if (m.type() === 'error') console.log('[console]', m.text()) })
|
|
await page.goto(url, { waitUntil: 'networkidle', timeout: 30000 })
|
|
|
|
for (let i = 0; i < 40; i++) {
|
|
const ok = await page.evaluate(() => {
|
|
const f = document.querySelector('iframe')
|
|
return !!(f && f.srcdoc && f.srcdoc.length > 1000)
|
|
})
|
|
if (ok) break
|
|
await new Promise((r) => setTimeout(r, 500))
|
|
}
|
|
|
|
const info = await page.evaluate(() => {
|
|
const f = document.querySelector('iframe')
|
|
if (!f) return { hasIframe: false }
|
|
const rect = f.getBoundingClientRect()
|
|
const d = f.contentDocument
|
|
return {
|
|
hasIframe: true,
|
|
iframeCss: f.style.cssText,
|
|
rectW: rect.width,
|
|
rectH: rect.height,
|
|
srcdocLen: f.srcdoc.length,
|
|
pages: d ? d.querySelectorAll('.op-page').length : -1,
|
|
bodyText: d ? (d.body.textContent || '').replace(/\s+/g, ' ').slice(0, 200) : '',
|
|
body: d ? d.body.innerHTML.slice(0, 300) : '',
|
|
}
|
|
})
|
|
console.log(JSON.stringify(info, null, 1))
|
|
await browser.close()
|
|
console.log('DONE')
|