Some checks failed
Deploy / deploy (push) Has been cancelled
Full-stack web application for Telegram management - Frontend: Vue 3 + Vben Admin - Backend: NestJS - Features: User management, group broadcast, statistics 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
152 lines
6.1 KiB
JavaScript
152 lines
6.1 KiB
JavaScript
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(); |