aardio网页自动化和窗口自动化的学习
网页自动化用于采集、填表等任务,现在一般用Chrome,aardio提供了chrome driver和chrome driverex扩展库,支持cdp命令。
窗口自动化,无非是win、winex、mouse、key几个库配合,标准窗口就是句柄操作,非标准窗口可以使用winex.accObject,还不行就找图找色找字,扩展库里还有大漠。
下面是我之前的两个小练习:
一、网页自动化
-
import win.ui;
-
/*DSG{{*/
-
var winform = win.form(text="Chrome Driver 练习";right=584;bottom=539;bgcolor=12639424;border="thin";max=false)
-
winform.add(
-
button={cls="button";text="开始采集";left=394;top=27;right=462;bottom=56;z=2};
-
button2={cls="button";text="保存结果";left=474;top=26;right=547;bottom=57;disabled=1;z=10};
-
combobox={cls="combobox";left=69;top=199;right=211;bottom=225;edge=1;items={};mode="dropdown";z=6};
-
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};
-
edit2={cls="edit";left=69;top=67;right=548;bottom=192;edge=1;hscroll=1;multiline=1;vscroll=1;z=4};
-
listview={cls="listview";left=66;top=236;right=548;bottom=527;edge=1;fullRow=1;gridLines=1;hscroll=1;vscroll=1;z=9};
-
static={cls="static";text="网址:";left=18;top=26;right=59;bottom=50;align="center";center=1;transparent=1;z=3};
-
static2={cls="static";text="日志:";left=17;top=65;right=64;bottom=89;align="center";center=1;transparent=1;z=5};
-
static3={cls="static";text="大洲:";left=14;top=203;right=61;bottom=227;align="center";center=1;transparent=1;z=7};
-
static4={cls="static";text="国家:";left=14;top=244;right=61;bottom=268;align="center";center=1;transparent=1;z=8}
-
)
-
/*}}*/
-
-
winform.listview.setColumns({"","序号","国家","链接"},{1,50,100,-1},{0,2,2,0})
-
var result={}
-
var log=function(...){
-
winform.edit2.print(tostring(time(,"%H:%M:%S")),...);
-
}
-
-
import chrome.driverex
-
var driver,err=chrome.driverex()
-
if !driver return win.msgbox(err);
-
driver.disableAutomation()
-
driver.setHeadless()
-
-
winform.button.oncommand = function(id,event){
-
winform.button.disabled=true
-
log("打开浏览器")
-
wb=driver.startBrowser()
-
log("打开网页")
-
wb.go(winform.edit.text)
-
wb.wait()
-
log("获取大洲名称")
-
var lables=wb.getEles("xpath",`//*[@id="tabHeader"]/ul/li`)
-
for (i=2;#lables){
-
var lableText=lables[i].getText()
-
winform.combobox.add(lableText)
-
}
-
winform.combobox.add("全部")
-
winform.combobox.selText="全部"
-
var n=0
-
for (i=2;#lables){
-
var lableText=lables[i].getText()
-
log("获取" lableText "国家名称")
-
lables[i].click()
-
wb.wait()
-
var countries=wb.getEles("xpath",`//*[@id="tc_` (i-1) `"]/ul/li/a`)
-
for (i=1;#countries-1){
-
var name=countries[i].getText()
-
var link=countries[i].getAttribute("href")
-
n
-
winform.listview.addItem({lableText,n,name,link})
-
}
-
}
-
result=table.clone(winform.listview.items)
-
log("采集完毕")
-
winform.button.disabled=false
-
winform.button2.disabled=false
-
}
-
-
winform.combobox.onListChange = function(){
-
var sel=winform.combobox.selText
-
if sel="全部" {
-
winform.listview.items=result
-
return ;
-
}
-
var tab=table.filter(result,function(v){
-
return v[1]=sel
-
})
-
winform.listview.items=tab
-
for (i=1;winform.listview.count){
-
winform.listview.setItemText(i,i,2)
-
}
-
}
-
-
winform.button2.oncommand = function(id,event){
-
//保存不是此次练习重点,故采取最简单方式
-
string.save("\result.txt",table.tostring(result) )
-
process.exploreSelect("\result.txt")
-
}
-
-
winform.onClose = function(hwnd,message,wParam,lParam){
-
winform.show(false)
-
if wb wb.closeAll()
-
if driver driver.close()
-
}
-
-
winform.show();
-
win.loopMessage();
二、窗口自动化-禁用触控板
这部分之前发过,现在整合到一块。一直觉得笔记本电脑的触控板很烦人,打字时不小心就会碰到。而且我这台电脑似乎有毛病,明明禁用了,下次开机又启用。于是写了个自动禁用触控板的程序。这个程序未必适用于每台电脑,而且没毛病的电脑可能禁用一次就好了,不必像我这样还要写程序。
-
//打开控制面板的鼠标属性
-
import process.control
-
process.control("mouse")
-
//找到窗口句柄
-
import winex
-
var hwnd0= winex.waitVisible("鼠标 属性")
-
//找到选项卡句柄
-
var hwnd=winex.findEx(hwnd0,,"SysTabControl32")
-
//这里改用新学的acc库操作,切换选项卡
-
import winex.accObject
-
var acc = winex.accObject.fromWindow(hwnd)
-
var tab = acc.find(name = "@装置设定值")
-
tab.doDefaultAction()
-
win.delay(100)
-
//找到选项卡对应页面的句柄和禁用按钮句柄
-
hwnd=winex.findEx(hwnd0,,,"Advanced Features")
-
hwnd=winex.findEx(hwnd,,,"@禁用(&D)")
-
//如果已经处于禁用状态就点击取消
-
if !win.isEnable(hwnd){
-
var cancle=winex.findEx(hwnd0,,,"取消")
-
winex.click(cancle)
-
return
-
};
-
//模拟点击禁用按钮
-
winex.click(hwnd)
-
//如果弹出警告就模拟点击确定
-
winex.waitTimeout=500
-
var warn=winex.waitVisible("警告")
-
if warn {
-
var yes=winex.findEx(warn,,,"确定")
-
winex.click(yes)
-
}
-
win.delay(100)
-
//点击主窗口确定按钮,使设置生效并关闭窗口
-
var ok=winex.findEx(hwnd0,,,"确定")
-
winex.click(ok)
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgggcjg
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13