debug_furniture_drag_restore.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. const { chromium } = require('playwright');
  2. const fs = require('fs');
  3. (async () => {
  4. const browser = await chromium.launch({ headless: true, executablePath: 'C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe' });
  5. const page = await browser.newPage({ viewport: { width: 1400, height: 1000 } });
  6. const errors = [];
  7. page.on('pageerror', error => errors.push(error.message));
  8. await page.goto('http://127.0.0.1:8931/AI%E5%BF%AB%E9%80%9F%E6%8A%A5%E4%BB%B7_Demo2.html?v=drag-restore-test', { waitUntil: 'load' });
  9. const image = fs.readFileSync('C:/Users/miao/Downloads/494f54100a93c5a6e0c90f404c597514.jpeg').toString('base64');
  10. await page.evaluate(data => {
  11. qUploadedDrawing = { name: 'restore-test.jpeg', size: data.length, type: 'image/jpeg' };
  12. qUploadedDrawingUrl = 'data:image/jpeg;base64,' + data;
  13. qUploadedDrawingDataUrl = qUploadedDrawingUrl;
  14. qStartAnalysis();
  15. }, image);
  16. await page.waitForTimeout(600);
  17. await page.evaluate(() => {
  18. document.querySelectorAll('.q-furniture-tool').forEach(tool => { tool.ondragstart = null; tool.onclick = null; });
  19. const workspace = document.getElementById('q-floorplan-layout-workspace');
  20. workspace.ondrop = null; workspace.ondragover = null;
  21. qStartAnalysis();
  22. });
  23. await page.waitForTimeout(100);
  24. const tool = page.locator('.q-furniture-tool').filter({ hasText: '玄关柜' }).first();
  25. const drawing = page.locator('#q-ai-cleaned-img');
  26. const workspace = page.locator('#q-floorplan-layout-workspace');
  27. const drawingBox = await drawing.boundingBox();
  28. const workspaceBox = await workspace.boundingBox();
  29. await tool.dragTo(workspace, { targetPosition: { x: drawingBox.x - workspaceBox.x + drawingBox.width * .45, y: drawingBox.y - workspaceBox.y + drawingBox.height * .55 } });
  30. await page.waitForTimeout(200);
  31. const placed = await page.evaluate(() => ({ count: qFurnitureLayout.length, type: qFurnitureLayout[0] && qFurnitureLayout[0].type, visible: document.querySelectorAll('.q-furniture-v3').length }));
  32. console.log(JSON.stringify({ placed, errors }));
  33. await browser.close();
  34. })().catch(error => { console.error(error); process.exit(1); });