#!/usr/bin/env node
import { ChromeBrowserManager } from './chrome-browser-manager.js';
async function testChromeBrowserManager() {
const browserManager = new ChromeBrowserManager();
console.log('🚀 开始测试Chrome浏览器文本读取功能...\n');
try {
// 测试1: 检查浏览器状态
console.log('📊 测试1: 检查浏览器状态...');
const initialStatus = await browserManager.getBrowserStatus();
console.log('初始状态:', JSON.stringify(initialStatus, null, 2));
// 测试2: 导航到网页(这会自动启动Chrome)
console.log('\n📍 测试2: 导航到测试网页...');
const navigateResult = await browserManager.navigateToPage({
url: 'https://example.com',
timeout: 15000
});
console.log('导航结果:', JSON.stringify(navigateResult, null, 2));
// 等待用户观察浏览器
console.log('\n👀 请观察Chrome浏览器窗口,按任意键继续...');
await new Promise(resolve => {
process.stdin.once('data', () => resolve(void 0));
});
// 测试3: 获取页面信息
console.log('\n📋 测试3: 获取页面信息...');
const pageInfoResult = await browserManager.getPageInfo();
console.log('页面信息:', JSON.stringify(pageInfoResult, null, 2));
// 测试4: 获取当前页面文本
console.log('\n📝 测试4: 获取当前页面文本...');
const currentPageTextResult = await browserManager.getCurrentPageText({
textType: 'visible'
});
console.log('当前页面文本:', JSON.stringify(currentPageTextResult, null, 2));
// 测试5: 获取特定元素文本
console.log('\n🎯 测试5: 获取特定元素文本...');
const specificTextResult = await browserManager.getCurrentPageText({
selector: 'h1',
textType: 'innerText'
});
console.log('特定元素文本:', JSON.stringify(specificTextResult, null, 2));
// 测试6: 导航到另一个页面
console.log('\n🌐 测试6: 导航到另一个页面...');
const navigate2Result = await browserManager.navigateToPage({
url: 'https://httpbin.org/html',
timeout: 15000
});
console.log('第二次导航结果:', JSON.stringify(navigate2Result, null, 2));
// 等待用户观察
console.log('\n👀 请观察页面变化,按任意键继续...');
await new Promise(resolve => {
process.stdin.once('data', () => resolve(void 0));
});
// 测试7: 获取新页面的文本
console.log('\n📄 测试7: 获取新页面的文本...');
const newPageTextResult = await browserManager.getCurrentPageText({
textType: 'visible'
});
console.log('新页面文本预览:', newPageTextResult.text?.substring(0, 200) + '...');
// 测试8: 检查最终状态
console.log('\n📊 测试8: 检查最终浏览器状态...');
const finalStatus = await browserManager.getBrowserStatus();
console.log('最终状态:', JSON.stringify(finalStatus, null, 2));
} catch (error) {
console.error('❌ 测试过程中出现错误:', error);
} finally {
// 询问是否关闭浏览器
console.log('\n🤔 是否要关闭浏览器?(y/n)');
const shouldClose = await new Promise<string>(resolve => {
process.stdin.once('data', (data) => {
resolve(data.toString().trim().toLowerCase());
});
});
if (shouldClose === 'y' || shouldClose === 'yes') {
console.log('\n🧹 关闭浏览器...');
const closeResult = await browserManager.closeBrowser();
console.log('关闭结果:', JSON.stringify(closeResult, null, 2));
} else {
console.log('\n✋ 保持浏览器打开状态');
}
}
console.log('\n✅ 测试完成!');
}
// 运行测试
testChromeBrowserManager().catch(console.error);