const { chromium } = require('playwright'); async function checkPageData() { const browser = await chromium.launch({ headless: false }); const context = await browser.newContext(); const page = await context.newPage(); // 监听控制台日志 page.on('console', msg => { if (msg.type() === 'log') { console.log('页面日志:', msg.text()); } }); // 监听网络请求 page.on('request', request => { if (request.url().includes('/tgAccount/list')) { console.log('前端发送请求:', request.method(), request.url()); console.log('请求头:', request.headers()); const postData = request.postData(); if (postData) { console.log('请求体数据:', postData); } } }); page.on('response', async response => { if (response.url().includes('/tgAccount/list')) { console.log('API响应状态:', response.status()); console.log('API响应URL:', response.url()); try { const responseData = await response.json(); console.log('API数据结构检查:'); console.log('- success:', responseData.success); console.log('- code:', responseData.code); console.log('- data存在:', !!responseData.data); console.log('- data.list存在:', !!(responseData.data && responseData.data.list)); console.log('- data.list长度:', responseData.data && responseData.data.list ? responseData.data.list.length : 0); if (responseData.data && responseData.data.list && responseData.data.list.length > 0) { const firstRecord = responseData.data.list[0]; console.log('第一条记录字段检查:', { id: firstRecord.id, phone: firstRecord.phone, password: firstRecord.password, session: firstRecord.session ? '有数据' : '无数据', firstname: firstRecord.firstname, lastname: firstRecord.lastname, about: firstRecord.about }); } } catch (e) { console.log('解析API响应失败:', e.message); } } }); try { // 访问页面 console.log('正在访问页面...'); await page.goto('http://localhost:8892'); // 等待页面加载 await page.waitForTimeout(3000); // 检查是否需要登录 const loginButton = await page.$('button'); if (loginButton) { console.log('检测到登录页面,尝试登录...'); // 查找用户名和密码输入框 const usernameInput = await page.$('input[placeholder*="用户名"], input[type="text"]'); const passwordInput = await page.$('input[placeholder*="密码"], input[type="password"]'); if (usernameInput && passwordInput) { console.log('找到登录表单,填写登录信息...'); await usernameInput.fill('admin'); // 根据CLAUDE.md中的账号信息 await passwordInput.fill('111111'); // 根据CLAUDE.md中的密码信息 // 点击登录按钮 await loginButton.click(); await page.waitForTimeout(3000); console.log('登录完成,等待页面跳转...'); } else { console.log('未找到登录表单,直接跳转到账号列表页面...'); } } // 直接访问账号列表页面 console.log('直接访问账号列表页面...'); await page.goto('http://localhost:8892/#/tgAccountManage/tgAccountList'); await page.waitForTimeout(5000); // 等待表格加载或任何数据显示 try { await page.waitForSelector('table', { timeout: 10000 }); console.log('找到数据表格'); } catch (e) { console.log('未找到表格,检查页面内容...'); const pageContent = await page.content(); console.log('页面HTML长度:', pageContent.length); // 检查是否有错误信息 const errorElements = await page.$$('text=/错误|Error|失败|Failed/i'); if (errorElements.length > 0) { console.log('页面显示错误信息'); for (const element of errorElements) { const text = await element.textContent(); console.log('错误信息:', text); } } // 检查是否仍在登录页面 const isLoginPage = await page.$('input[type="password"]'); if (isLoginPage) { console.log('仍然在登录页面,需要处理登录'); return; } } // 检查表格数据 const tableRows = await page.$$('table tbody tr'); console.log(`找到 ${tableRows.length} 行数据`); // 检查前几行的数据内容 for (let i = 0; i < Math.min(3, tableRows.length); i++) { const row = tableRows[i]; const cells = await row.$$('td'); console.log(`\n第 ${i + 1} 行数据:`); for (let j = 0; j < cells.length; j++) { const cellText = await cells[j].textContent(); console.log(` 列 ${j + 1}: "${cellText.trim()}"`); } } // 截图保存 await page.screenshot({ path: '/Users/hahaha/telegram-management-system/frontend/page_screenshot.png', fullPage: true }); console.log('页面截图已保存到 page_screenshot.png'); await page.waitForTimeout(5000); } catch (error) { console.error('检查页面时出错:', error); } finally { await browser.close(); } } checkPageData();