const { chromium } = require('playwright'); (async () => { const browser = await chromium.launch({ headless: true }); const page = await browser.newPage(); console.log('=== 功能测试 ===\n'); await page.goto('http://localhost:5173/#/pages/video-generator/create', { waitUntil: 'networkidle', timeout: 30000 }); await page.waitForTimeout(3000); // 使用 JavaScript 直接设置值 console.log('1. 使用 JavaScript 设置输入值:'); const result = await page.evaluate(() => { const input = document.querySelector('input.form-input'); if (!input) return { success: false, error: '未找到 input' }; // uni-app 的 input 组件通常通过 setter 来设置值 // 尝试多种方法 try { // 方法1: 直接设置 __vueparentComponent 的值 if (input.__vueparentComponent) { input.__vueparentComponent.ctx.title = 'JavaScript测试标题'; return { success: true, method: 'vueparentComponent' }; } // 方法2: 使用原生 input const nativeInput = input.querySelector('input'); if (nativeInput) { nativeInput.value = 'JavaScript测试标题'; nativeInput.dispatchEvent(new Event('input', { bubbles: true })); return { success: true, method: 'nativeInput', value: nativeInput.value }; } // 方法3: 模拟 input 事件 input.value = 'JavaScript测试标题'; input.dispatchEvent(new Event('input', { bubbles: true })); return { success: true, method: 'directInput' }; } catch (e) { return { success: false, error: e.message }; } }); console.log(JSON.stringify(result, null, 2)); // 截图 await page.screenshot({ path: 'js-input-test.png', fullPage: true }); console.log('\n已保存截图: js-input-test.png'); await browser.close(); })();