Button Detector Accept YES, I ACCEPT close { if (elementMatchesText(btn)) { buttons.push(getAbsolutePosition(btn)); } }); // 检查所有 iframe const iframes = document.querySelectorAll('iframe'); iframes.forEach(iframe => { try { const iframeDoc = iframe.contentDocument || iframe.contentWindow.document; const iframeButtons = iframeDoc.querySelectorAll('button, input[type="button"], input[type="submit"], a'); iframeButtons.forEach(btn => { if (elementMatchesText(btn)) { const pos = getAbsolutePosition(btn); // 调整 iframe 内元素的坐标,考虑 iframe 的位置 const iframeRect = iframe.getBoundingClientRect(); buttons.push({ x: pos.x + iframeRect.left, y: pos.y + iframeRect.top }); } }); } catch (e) { console.error('Cannot access iframe content:', e); } }); return buttons; } // 将结果写入本地文件(模拟传递给 Python) async function saveCoordinates() { const buttons = findMatchingButtons(); const data = JSON.stringify(buttons, null, 2); // 假设使用 fetch 将数据发送到后端或写入文件 // 这里模拟保存到本地(实际环境可能需要后端 API) console.log('Found buttons at coordinates:', data); // 为了演示,我们将数据写入一个 blob 并触发下载 const blob = new Blob([data], { type: 'application/json' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'button_coordinates.json'; a.click(); URL.revokeObjectURL(url); } // 页面加载完成后执行 window.onload = () => { setTimeout(saveCoordinates, 1000); // 延迟 1 秒确保 iframe 加载完成 };