diff --git a/static/admin/monitor.js b/static/admin/monitor.js index eca566a..e92ef90 100644 --- a/static/admin/monitor.js +++ b/static/admin/monitor.js @@ -920,6 +920,7 @@ var _stepEditor={ card.draggable=true; card.dataset.idx=idx; card.dataset.stepId=step.id||''; + card.dataset.stepType=step.type; if(this._selected&&this._selected.indexOf(step.id)>=0)card.classList.add('selected'); // head var head=document.createElement('div'); @@ -1145,6 +1146,50 @@ var _stepEditor={ _makeStep:function(lib){ return {id:_newStepId(),type:lib.type,label:lib.label,params:JSON.parse(JSON.stringify(lib.params))}; }, + // 测试此步骤:在选中设备上试执行当前步骤,验证选择器 + _testStep:function(btn){ + var card=btn.closest('.step-card'); + if(!card)return; + var type=card.dataset.stepType||''; + var params={}; + card.querySelectorAll('[data-key]').forEach(function(inp){ + if(inp.type==='checkbox')params[inp.dataset.key]=inp.checked; + else if(inp.type==='number')params[inp.dataset.key]=parseFloat(inp.value)||0; + else params[inp.dataset.key]=inp.value; + }); + this._pendingTest={type:type,label:'测试',params:params}; + this._showTestDevicePicker(); + }, + _showTestDevicePicker:function(){ + document.getElementById('test-modal-title').textContent='测试步骤 - 选择设备'; + document.getElementById('test-modal-body').innerHTML= + '
选择在哪个设备上试执行
加载中...
'; + document.getElementById('test-overlay').classList.add('show'); + var self=this; + apiGet('/api/uiauto/devices').then(function(r){ + var list=document.getElementById('test-device-list'); + if(!list)return; + if(!r||!r.ok){list.innerHTML='
'+esc((r&&r.error)||'获取设备失败')+'
';return;} + list.innerHTML=(r.devices||[]).map(function(d){ + return '
'+ + '
📱
'+ + '
'+esc(d.serial)+'
'+ + '
'+esc(d.model||d.product||'')+'
'; + }).join('')||'
无可用设备
'; + }); + }, + _runTestStep:async function(serial){ + var step=this._pendingTest; + var body=document.getElementById('test-modal-body'); + if(!step||!body)return; + body.innerHTML='
正在 '+esc(serial)+' 上执行(adb + u2 连接约需几秒)...
请稍候,期间不要操作该设备
'; + var r=await apiPost('/api/steps/test',{serial:serial,step:step}); + if(!r)return; + var icon=r.result==='命中'?'✅':(r.result==='未找到'?'❌':'▶'); + body.innerHTML='
'+icon+' '+esc(r.result||'已执行')+''+ + '
'+esc(r.msg||'')+'
'+ + '
'; + }, addStep:function(type){ var lib=_findLib(type); if(!lib)return;