• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

aardio网页自动化和窗口自动化的学习

武飞扬头像
墨斗aardio笔记
帮助1

网页自动化用于采集、填表等任务,现在一般用Chrome,aardio提供了chrome driver和chrome driverex扩展库,支持cdp命令。

窗口自动化,无非是win、winex、mouse、key几个库配合,标准窗口就是句柄操作,非标准窗口可以使用winex.accObject,还不行就找图找色找字,扩展库里还有大漠。

下面是我之前的两个小练习:

一、网页自动化

  1.  
    import win.ui;
  2.  
    /*DSG{{*/
  3.  
    var winform = win.form(text="Chrome Driver 练习";right=584;bottom=539;bgcolor=12639424;border="thin";max=false)
  4.  
    winform.add(
  5.  
    button={cls="button";text="开始采集";left=394;top=27;right=462;bottom=56;z=2};
  6.  
    button2={cls="button";text="保存结果";left=474;top=26;right=547;bottom=57;disabled=1;z=10};
  7.  
    combobox={cls="combobox";left=69;top=199;right=211;bottom=225;edge=1;items={};mode="dropdown";z=6};
  8.  
    edit={cls="edit";text="http://m.titan007.com/info.htm#section1";left=70;top=27;right=388;bottom=54;edge=1;multiline=1;readonly=1;z=1};
  9.  
    edit2={cls="edit";left=69;top=67;right=548;bottom=192;edge=1;hscroll=1;multiline=1;vscroll=1;z=4};
  10.  
    listview={cls="listview";left=66;top=236;right=548;bottom=527;edge=1;fullRow=1;gridLines=1;hscroll=1;vscroll=1;z=9};
  11.  
    static={cls="static";text="网址:";left=18;top=26;right=59;bottom=50;align="center";center=1;transparent=1;z=3};
  12.  
    static2={cls="static";text="日志:";left=17;top=65;right=64;bottom=89;align="center";center=1;transparent=1;z=5};
  13.  
    static3={cls="static";text="大洲:";left=14;top=203;right=61;bottom=227;align="center";center=1;transparent=1;z=7};
  14.  
    static4={cls="static";text="国家:";left=14;top=244;right=61;bottom=268;align="center";center=1;transparent=1;z=8}
  15.  
    )
  16.  
    /*}}*/
  17.  
     
  18.  
    winform.listview.setColumns({"","序号","国家","链接"},{1,50,100,-1},{0,2,2,0})
  19.  
    var result={}
  20.  
    var log=function(...){
  21.  
    winform.edit2.print(tostring(time(,"%H:%M:%S")),...);
  22.  
    }
  23.  
     
  24.  
    import chrome.driverex
  25.  
    var driver,err=chrome.driverex()
  26.  
    if !driver return win.msgbox(err);
  27.  
    driver.disableAutomation()
  28.  
    driver.setHeadless()
  29.  
     
  30.  
    winform.button.oncommand = function(id,event){
  31.  
    winform.button.disabled=true
  32.  
    log("打开浏览器")
  33.  
    wb=driver.startBrowser()
  34.  
    log("打开网页")
  35.  
    wb.go(winform.edit.text)
  36.  
    wb.wait()
  37.  
    log("获取大洲名称")
  38.  
    var lables=wb.getEles("xpath",`//*[@id="tabHeader"]/ul/li`)
  39.  
    for (i=2;#lables){
  40.  
    var lableText=lables[i].getText()
  41.  
    winform.combobox.add(lableText)
  42.  
    }
  43.  
    winform.combobox.add("全部")
  44.  
    winform.combobox.selText="全部"
  45.  
    var n=0
  46.  
    for (i=2;#lables){
  47.  
    var lableText=lables[i].getText()
  48.  
    log("获取" lableText "国家名称")
  49.  
    lables[i].click()
  50.  
    wb.wait()
  51.  
    var countries=wb.getEles("xpath",`//*[@id="tc_` (i-1) `"]/ul/li/a`)
  52.  
    for (i=1;#countries-1){
  53.  
    var name=countries[i].getText()
  54.  
    var link=countries[i].getAttribute("href")
  55.  
    n
  56.  
    winform.listview.addItem({lableText,n,name,link})
  57.  
    }
  58.  
    }
  59.  
    result=table.clone(winform.listview.items)
  60.  
    log("采集完毕")
  61.  
    winform.button.disabled=false
  62.  
    winform.button2.disabled=false
  63.  
    }
  64.  
     
  65.  
    winform.combobox.onListChange = function(){
  66.  
    var sel=winform.combobox.selText
  67.  
    if sel="全部" {
  68.  
    winform.listview.items=result
  69.  
    return ;
  70.  
    }
  71.  
    var tab=table.filter(result,function(v){
  72.  
    return v[1]=sel
  73.  
    })
  74.  
    winform.listview.items=tab
  75.  
    for (i=1;winform.listview.count){
  76.  
    winform.listview.setItemText(i,i,2)
  77.  
    }
  78.  
    }
  79.  
     
  80.  
    winform.button2.oncommand = function(id,event){
  81.  
    //保存不是此次练习重点,故采取最简单方式
  82.  
    string.save("\result.txt",table.tostring(result) )
  83.  
    process.exploreSelect("\result.txt")
  84.  
    }
  85.  
     
  86.  
    winform.onClose = function(hwnd,message,wParam,lParam){
  87.  
    winform.show(false)
  88.  
    if wb wb.closeAll()
  89.  
    if driver driver.close()
  90.  
    }
  91.  
     
  92.  
    winform.show();
  93.  
    win.loopMessage();
学新通

学新通

 二、窗口自动化-禁用触控板

这部分之前发过,现在整合到一块。一直觉得笔记本电脑的触控板很烦人,打字时不小心就会碰到。而且我这台电脑似乎有毛病,明明禁用了,下次开机又启用。于是写了个自动禁用触控板的程序。这个程序未必适用于每台电脑,而且没毛病的电脑可能禁用一次就好了,不必像我这样还要写程序。

  1.  
    //打开控制面板的鼠标属性
  2.  
    import process.control
  3.  
    process.control("mouse")
  4.  
    //找到窗口句柄
  5.  
    import winex
  6.  
    var hwnd0= winex.waitVisible("鼠标 属性")
  7.  
    //找到选项卡句柄
  8.  
    var hwnd=winex.findEx(hwnd0,,"SysTabControl32")
  9.  
    //这里改用新学的acc库操作,切换选项卡
  10.  
    import winex.accObject
  11.  
    var acc = winex.accObject.fromWindow(hwnd)
  12.  
    var tab = acc.find(name = "@装置设定值")
  13.  
    tab.doDefaultAction()
  14.  
    win.delay(100)
  15.  
    //找到选项卡对应页面的句柄和禁用按钮句柄
  16.  
    hwnd=winex.findEx(hwnd0,,,"Advanced Features")
  17.  
    hwnd=winex.findEx(hwnd,,,"@禁用(&D)")
  18.  
    //如果已经处于禁用状态就点击取消
  19.  
    if !win.isEnable(hwnd){
  20.  
    var cancle=winex.findEx(hwnd0,,,"取消")
  21.  
    winex.click(cancle)
  22.  
    return
  23.  
    };
  24.  
    //模拟点击禁用按钮
  25.  
    winex.click(hwnd)
  26.  
    //如果弹出警告就模拟点击确定
  27.  
    winex.waitTimeout=500
  28.  
    var warn=winex.waitVisible("警告")
  29.  
    if warn {
  30.  
    var yes=winex.findEx(warn,,,"确定")
  31.  
    winex.click(yes)
  32.  
    }
  33.  
    win.delay(100)
  34.  
    //点击主窗口确定按钮,使设置生效并关闭窗口
  35.  
    var ok=winex.findEx(hwnd0,,,"确定")
  36.  
    winex.click(ok)
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgggcjg
系列文章
更多 icon
同类精品
更多 icon
继续加载