AutoIt操作Dynamic control Id控件
来源:互联网 发布:幼儿园床垫淘宝 编辑:程序博客网 时间:2024/06/05 19:43
在AutoIt脚本中,对要操作的控件需要知道其control id ,但是对于IE浏览器中的安全控件,其id是在打开浏览器时动态生成的,每次打开浏览器,id都不一样,是动态变化的,所以要操作这种类型的控件,需要另想办法
参考:
https://www.autoitscript.com/forum/topic/157706-how-can-i-retrieve-a-dynamic-control-id/#comment-1143379
建立AutoIT script文件,任意命名,写入以下内容:
;通过WinGetClassList函数获取窗体中的所有控件名,然后,在IE浏览器中控件动态标识符是以ATL开头的,找这类控件即可#include <MsgBoxConstants.au3>#include <IE.au3>$oIE = _IECreate ("https://pbsz.ebank.cmbchina.com/CmbBank_GenShell/UI/GenShellPC/Login/Login.aspx","0,1,1,0")Local $hWnd =WinWait("[ClASS:IEFrame]","",10)Local $sClassList = WinGetClassList($hWnd)Local $controClasss$aClassList = StringSplit($sClassList,@CRLF,2)For $i=0 To UBound($aClassList) -1 IfStringInStr(String($aClassList[$i]),"ATL")Then $controlClass = String($aClassList[$i]) ExitLoop EndIfNextLocal $ClassNameNN_Account =$controlClass&2 ;控件识别码,用于向控件传递参数Local $ClassNameNN_Password =$controlClass&1MsgBox($MB_SYSTEMMODAL, "",$ClassNameNN_Account)ControlSend($hWnd,"",$ClassNameNN_Account, "123456")ControlSend($hWnd,"",$ClassNameNN_Password, "111111")Sleep(5000)WinClose($hWnd)
以上代码存在的问题:
填入的信息不完整,比如账号只能填2345,而没有把1填进去,随机发生的,解决办法:在脚本中加入sleep语句,让其睡个3秒钟
总结:
1、分清楚Windows下的两个概念:窗口和控件,在Autoit中窗口需要使用Win**函数进行操作,控件使用control**函数进行操作,例如:
Local $hWnd = WinWait("[ClASS:IEFrame]","",10)
Local $sClassList = WinGetClassList($hWnd)
;之前写的Local $hWnd =WinWait("[ClASS:Internet Explorer_Server]","",10)是无法获取到信息的,因为根本就不存在ClASS:为Internet Explorer_Server的窗口,所以读不到信息。
2、使用IE和MsgBox前需要引入相关的包,否则运行时会报错
3、WinGetClassList函数式关键,它能找到当前窗口里所存在的所有class信息,而控件的class信息也在其中,于是就可以去寻找到所需要的控件id(id有一部分是固定的开头)。
4、Autoit中,变量可以转换为字符串,它可以比较两个字符变量是否=,但是无法用包含,只能调用StringInSub()函数,该函数可以传变量,也可以传字符串
- AutoIt操作Dynamic control Id控件
- Java中调用AutoIt操作控件
- AutoIT对窗体控件进行操作的例子
- AutoIt操作Windows系统上的任意控件
- WinForms - Dynamic Control Creation
- Android dynamic TAB Control
- 使用AutoIt获取控件信息
- autoit对文件的操作
- AutoIt 对于文件的操作
- ASP.NET Futures初探——动态数据控件(Dynamic Data Control):深入一些
- ASP.NET Futures初探——动态数据控件(Dynamic Data Control)
- Dynamic range compression/Dynamic range control
- AutoIt
- AUTOIT
- AutoIt
- autoit
- autoit
- autoit
- 第三天
- Python:简单select模块使用
- cuda示例截图
- 【信息论】信源与信源熵(一)
- 正则表达式的基本用法
- AutoIt操作Dynamic control Id控件
- 如何不输入项目名端口号直接访问java web项目
- cocos2dx touch 单击、双击、三连击和长按事件处理
- java中 基本数据结构的应用
- 同步传输 异步传输
- localStorage 历史存储小工具
- C# winform 使用进度条(两种形式)
- Android7.0源码下载,编译,运行
- 【Linux 内核网络协议栈源码剖析】系统网络协议栈初始化及数据传输通道建立过程