关于使用远程调试接口实现网页自动化操作如何直接获取回调函数的返回值的问题

涛声依旧 2天前 89

//使用远程调试接口实现网页自动化操作

import win.ui;

/*DSG{{*/

var winform = win.form(text="调用chrome远程调试接口";right=784;bottom=557;topmost=1)

winform.add(

btnConnect={cls="button";text="连接chrome";left=595;top=422;right=737;bottom=467;db=1;disabled=1;dr=1;z=4};

btnSend={cls="button";text="调用chrome打开网页";left=595;top=478;right=737;bottom=523;db=1;disabled=1;dr=1;z=3};

btnStartChrome={cls="button";text="启动chrome调试进程";left=201;top=364;right=368;bottom=409;db=1;dr=1;z=5};

buttonList={cls="button";text="获取可调试网页列表";left=516;top=364;right=683;bottom=409;db=1;disabled=1;dr=1;z=7};

editPort={cls="edit";left=399;top=370;right=491;bottom=400;edge=1;multiline=1;z=6};

txtData={cls="edit";text="http://www.aardio.com";left=32;top=481;right=585;bottom=520;db=1;dl=1;dr=1;edge=1;multiline=1;z=2};

txtMessage={cls="richedit";left=29;top=22;right=755;bottom=352;db=1;dl=1;dr=1;dt=1;edge=1;hscroll=1;multiline=1;vscroll=1;z=1};

txtWsUrl={cls="edit";left=35;top=425;right=588;bottom=464;edge=1;items={};z=8}

)

/*}}*/


import web.socket.chrome;

var ws = web.socket.chrome();


//打开连接触发的事件

ws.on("open",function(){ 

    winform.txtMessage.print("已打开连接");

    winform.btnSend.disabled = false;     

})


ws.on("close",function(){

    winform.txtMessage.print("已关闭连接");  

    winform.btnStartChrome.disabledText = false;    

});


ws.on("error",function(err){ 

    winform.txtMessage.print("出错了",err);

});  


//监听chrome事件

ws.on("Inspector.detached",function(param){

    winform.txtMessage.print("chrome已主动断开连接,原因:",param);

}) 


ws.on("Network.requestWillBeSent",function(param){

winform.txtMessage.print("准备发送请求:",param );

})


ws.on("Runtime.executionContextCreated",function(param){

    winform.txtMessage.print("Javascript executionContextId",param.context.id);

}) 


//调用chrome打开一个网页

winform.btnSend.oncommand = function(id,event){

    

    //允许触发Runtime.executionContextCreated

  ws.Runtime.enable();

 

  //允许触发Network.requestWillBeSent

  ws.Network.enable(

            maxTotalBufferSize = 10240;

    ).end = function(result,err){

        winform.txtMessage.print("调用Network.enable结果:",result)

    }   

           

    ws.Page.navigate(

        url = winform.txtData.text;

    ).end = function(result,err){

        winform.txtMessage.print("调用返回参数",result)

    } 

}


//连接chrome

winform.btnConnect.oncommand = function(id,event){

    ws.connect(winform.txtWsUrl.text);

}


import chrome.remote;

winform.btnStartChrome.oncommand = function(id,event){


var cr = chrome.remote({

//同一用户数据目录应当只启动一个开启远程调试端口的浏览器进程

["--user-data-dir"] = "%LocalAppData%\aardio\chrome.remote.userdata";

})  


winform.editPort.text = cr.remoteDebuggingPort;

if( cr.remoteDebuggingPort){

winform.buttonList.disabled = false;

winform.btnStartChrome.disabledText = "已启动"

}

}


winform.buttonList.oncommand = function(id,event){

winform.buttonList.disabled = true;

thread.delay(100);

 

    var first;

for id,title,wsUrl,devtoolsUrl in ws.eachDebuggingPage(winform.editPort.text) {

winform.txtMessage.print(title);

winform.txtMessage.print(devtoolsUrl);

winform.txtMessage.print(wsUrl);

winform.txtMessage.print();


if(!first) {

first = wsUrl;

winform.btnConnect.disabled = false;

}


winform.txtWsUrl.text = first : "";

winform.buttonList.disabled = false;

}


winform.show() 

win.loopMessage();


这个回调函数

ws.Page.navigate(

        url = winform.txtData.text;

    ).end = function(result,err){

        winform.txtMessage.print("调用返回参数",result)

    } 


如,怎样直接获取 result 的值 

像这样直接获取var result=ws.Page.navigate(url = winform.txtData.text;)   (这样获取不到 result 的返回值)

最新回复 (0)
返回