AutoIT: 句柄的妙用】的更多相关文章

句柄是独一无二的,很多时候,Title,Command都可以用句柄来代替.以下写法是能够起一样的作用. $handle= WinGetHandle("autoit cn") $ctrl= ControlGetHandle("autoit cn","","[CLASS:Button;INSTANCE:5]") ControlClick($handle,"",$ctrl) ;controlclick("…
这篇笔记是我对批处理学习的一些总结,能在系统帮助里找到的内容我就不写了,太偏门的也不写,只写些个人感觉很好用的技巧,大部分属于整理 一.set 篇: 1.set(无开关) set .=test set. ::若一个变量以:\.这三个与路径相关的符号开头,用set查看以该字符打头的变量时可以省去一个空格. echo %tmp:*\=% ::显示tmp变量第一个\之后的部分,其余变量替换与变量偏移太简单不解释 2.set /p 变量名=注释<设备名 当设备名为文件时,因为文件中换行符与回车符伴生,所…
经过尝试,对AutoIt中Control和Window有了新的认识,分享一下 1.Control 现在我想对一个WinForm架构的应用程序进行自动化操作,得到控件Advanced Mode属性为[Name:XXX]. 然而在该窗口中有多个相同属性的Control,而依该属性只能操作最靠前的一个,无法获取其它. 尝试解决如下,私自加入Instance属性,[Name:XXX;Instance:i](i=1,2,3,4,...) 顺利达成目的,可以推测,AutoIt获取到的某个控件句柄原本是一个数…
下面我们来介绍如何使用AutoIT完成单机程序的自动化测试.使用AutoIT完成桌面应用程序的自动化测试,最重要的是找到识别GUI对象的方法,然后调用AutoIT函数来操纵它或读取它的属性值,并与正确的结果进行比较.AutoIT内置了大量操作Windows标准控件的方法,可以满足一般应用程序的测试需求.我们还可以通过调用动态库或COM扩展的方式来扩展AutoIT的功能. 1. 识别窗口的方法 编写自动化脚本的时候,首先要解决的一个问题就是如何(在众多窗口中)准确识别出目标窗口.一般来说,我们常把…
转载请说明原出处,谢谢~~ 看到群里朋友有人讨论WTL中的thunk技术,让我联想到了duilib的类似技术.这些技术都是为了解决c++封装的窗体类与窗体句柄的关联问题. 这里是三篇关于thunk技术的博客,不懂的朋友可以先看一下: WTL学习之旅(三)WTL中 Thunk技术本质(含代码) 深入剖析WTL-WTL框架窗口分析 (5) 学习下 WTL 的 thunk 我这里直接引用其他博客的一部分文字来说明窗体类与窗体句柄关联的重要性和相关的问题,然后说明一下duilib中的解决方法: ----…
Delphi中ShellExecute的妙用       ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件.打开一个目录.打印一个文件等等),并对外部程序有一定的控制.       一.ShellExecute常用方法       有几个API函数都可以实现这些功能,但是在大多数情况下ShellExecute是更多的被使用的,同时它并不是太复杂.下面举例说明它的用法.   1.开始一个新的应用程序 ShellExecute(Handle, 'open', PChar(…
情景: 在用selenium进行web页面自动化时,时不时会遇到上传附件的情况,常见的情况就是一个上传按钮,点击后弹出windows窗口,选择文件后上传,如下图1所示 图1 这种情况超出了selenium的能力范围,需要借助其他工具来实现,这里介绍AutoIt这个工具: 1.下载并安装 进入AutoIt官网,选择AutoIt -> Downloads,如图2: 图2 然后选择Full Installation版本,里面包含了所需的所有工具,如图3: 图3 下载后直接安装即可. 2.探测控件 (1…
Office的所有COM Add In,包括用Shared Add In模板和VSTO Add In模板创建的,都会在注表里面存储一些信息.对于当前用户安装的Add In,以Excel为例,对应的注册表键值存储于:My Computer"HKCU"Software"Microsoft"Office"Addins"AddInName:机器级别的Add In存储于:My Computer"HKLM"Software"Mi…
问题 在做web端ui层自动化的时候会碰到文件上传的操作,经常有朋友问到,这里总结一下 解决方案 第一种:type=file的上传文件,类似如下的 使用类似这样的代码就可以完成: driver.find_element('name','file').send_keys('./小强测试品牌.png') 第二种:就是第一种除外的,实现起来较为麻烦,这里用到了autoit,大致步骤如下: 1.下载并安装autoit,之后在开始菜单可以看到如下 AutoIt Windows Info 用于识别Windo…
今天听到同事提到AutoIT,可以用来测试GUI窗口.了解一下这个工具. 以下内容引自: http://www.jb51.net/article/14870.htm (此url非原出处,该博主未注明原出处) autoit入门教程小结 第1/5页 转载  2008-06-19 作者: yonken 据我了解需要编写AutoHotkey/AutoIt脚本来实现自动化操作的用户很多都是网管,其它则可能是一些个人用户,他们一般都具有相当的技术水平,而且都希望能借助脚本来完成某些以往需要人工操作的重复性劳…
 Office的所有COM Add In,包括用Shared Add In模板和VSTO Add In模板创建的,都会在注册表里面存储一些信息. 对于当前用户安装的Add In,以Excel为例,对应的注册表键值存储于:My Computer/HKCU/Software/Microsoft/Office/Addins/AddInName: 机器级别的Add In存储于:My Computer/HKLM/Software/Microsoft/Office/Addins/AddInName. 普通的…
版本六中存在一个显著问题是: 当exe文件生存之后,运行的时候,通过consoleWrite函数打印出来的数据是无法展示出来的.这就存在一个问题:当运行失败的时候,我还是看不到任何log信息. 于是,我对程序再次进行了优化,代码如下: #include <ScreenCapture.au3> #include <GuiConstantsEx.au3> #include <date.au3> #include <GuiTab.au3> #include <…
自动化操作的稳定性,便利性虽然已经满足了要求,但是页面上呈现的按钮太多了,可以做的更加简单一些. 1. 简化页面的按钮,把5个按钮减少至3个,把Display HID按钮功能整合到create license里面:把保存图片按钮功能放到保存License操作中: 2. 优化输入框.由3个简化为2个,因为HID是固定的,不应该支持手动修改,而expired date默认为当前日期延后2个月,是支持修改的: 代码如下: #include <ScreenCapture.au3> #include &…
前段时间,我一直认为,通过AutoIt进行自动化操作,也只有几个方法可以用,它们只是controlClick, controlsend等如下图: 我一直认为,AutoIt的所有的GUI 方法,都是用来创建界面使用的. 今天,开发找我,让我把他的一个GUI页面上所有的资源获取下来: 页面上一个ListView中,一共有大约70个list,我现在需要遍历这70个list,然后当该list获取焦点的时候,右键点击,然后在弹出框中点击第二个选项,从而保存图片? 我一直期待能找到一个函数,比喻:Contr…
2008年的时候第一次接触AutoIt,当时觉得局限性太多了,就不想学,觉得把Watir,Ruby搞好就行了. 最近一段时间比较闲,发现自己对GUI的自动化操完全是短板,就把AutoIt重新拾起来了.不再考虑什么局限性了,想着,反正现在,GUI自动化操作我啥也不会,学习了解一下总是好的. 也许是先入为主的想法太严重了,我对Send,controlSend命令是有偏见的,觉得定位能力差,一旦一个界面不是在前端就定位不了.习惯性的使用controlClick, ControlCommand, Con…
以前用Ruby脚本,对于中文,数字结合的文件名,修改名字也不是非常简单,需要修改字符集,可是用autoit来实现,也挺简单的,并且可以替换已有文件名中的汉字部分. $filepath = "Filewith\2000.7月底延期事宜" if FileExists($filepath) Then FileChangeDir($filepath) $search = FileFindFirstFile("*.*") ; 检查搜索是否成功 Then ConsoleWrit…
写在前面:这里介绍句柄 对于“句柄”,在下一直停留在一知半解的认识层面,近日在下学习Windows编程,决定趁此机会将句柄彻底搞清楚.查阅了一些网络上的资料,发现网络上的讲解大概可以分为两类:一种是以比喻.类比的方式说明,这种方法虽然形象易懂,但并没有从原理上.本质上加以揭示,让人仍然想问“为什么?”.“怎么实现?”.另一种是给出源代码,无可厚非,这当然是最本质的说明了,但这样一来,又显得不够直观,初学者理解起来有一定的难度.鉴于此,在下尽微末之能,结合自己的愚见,在两者之间折中,用图解的方式来…
模拟鼠标点击(按钮等)控件 既然是模拟用户操作,自然就包括了模拟鼠标点击在内. 适用命令/函数:Click/MouseClick/ControlClick 其中Click/MouseClick用来模拟用户的物理操作(点击),把鼠标点击事件发送到指定坐标位置(相对当前窗口或绝对位置)上,但这种方法并不能保证100%的准确性,屏幕分辨率.用户干扰和系统环境等都会影响到它们的执行结果,而ControlClick则直接把鼠标点击事件发送到目标窗口的目标控件上,因而更准确,一般我们不考虑使用坐标位置方式的…
最近在研读 <CSS SECRET>(CSS揭秘)这本大作,对 CSS 有了更深层次的理解,折腾了下面这个项目: CSS3奇思妙想 -- Demo (请用 Chrome 浏览器打开,非常值得一看).采用单标签完成各种图案,许多图案与本文有关. 也希望觉得不错的同学顺手在我的 Github 点个 star : CSS3奇思妙想 . 正文从这里开始,本文主要讲述一下 伪元素 before 和 after 各种妙用.    :before和::before的区别 在介绍具体用法之前,简单介绍下伪类和…
在运用WebDriver进行自动化测试时,由于WebDriver自身的限制,对于上传文件时Windows弹出的文件选择窗口无法控制,通过在网上查找资料锁定使用AutoIt来控制文件上传窗口. AutoIt工具的使用方法: 1.下载AutoIt之后双击Au3Info.exe打开定位器,如下图: 2.打开文件选择窗口页面 3.在AutoIt的定位器页面按住Finder Tool拖到文件选择窗口的"打开"按钮上,定位按钮的相关属性 依次定位保存按钮,使用ControlFocus方法,定位编辑…
JavaScript的妙与乐系列文章主要是展示一些JavaScript上面比较好玩一点的特性和一些有用的技巧,里面很多内容都是我曾经在项目中使用过的一些内容(当然,未必所有技巧的使用频率都很高^_^). 本篇文章主要是探讨一些辅助函数的书写优化. 函数优化 在JavaScript中由于浏览器的兼容性差异,导致了在操纵DOM相关的代码中常常会有所差异,比如最经典的给DOM绑定事件 //dom var dom = document.getElementById('example'); //event…
浏览器事件模型和回调机制 JavaScript作为单线程运行于浏览器之中,这是每本JavaScript教科书中都会被提到的.同时出于对UI线程操作的安全性考虑,JavaScript和UI线程也处于同一个线程中.因此对于长时间的耗时操作,将会阻塞UI的响应.为了更好的UI体验,应该尽量的避免JavaScript中执行较长耗时的操作(如大量for循环的对象diff等)或者是长时间I/O阻塞的任务.所以在浏览器中的大多数任务都是异步(无阻塞)执行的,例如:鼠标点击事件.窗口大小拖拉事件.定时器触发事件…
1.事件冒泡与事件捕获 2.事件与事件句柄   3.事件委托:利用事件的冒泡技术.子元素的事件最终会冒泡到父元素直到跟节点.事件监听会分析从子元素冒泡上来的事件. 事件委托的好处:     1.每个函数都是对象,都会占用内存,内存中对象越多,性能越差.     2.必须事先指定所有事件处理程序而导致的DOM访问次数,会延迟整个页面的交互就绪时间. 怎样处理由于事件较多引起的性能差: 1.采用事件委托技术,限制简历的连接数量 2.在不需要的时候移除事件处理程序 例子: html: <div id=…
最近无论是工作还是自我学习提升都很忙,面对长篇大论的博文总是心有余而力不足,但又不断的接触学习到零碎的但是很有意义的知识点,很想分享给大家,所以本篇可能会很短. 本篇接我另一篇讲述 CSS 伪元素的文章: [CSS进阶]伪元素的妙用–单标签之美,看完本文觉得有意思的可以再去看看上一篇,分享了一些伪元素的妙用. 正文从这里开始: 哪些标签不支持伪元素? 我也是才知道这个姿势.为了不误导读者,就赶紧补充一下. 伪元素虽然强大,但是还是有一些特定的标签是不支持伪元素 before 和 after 的.…
%%lockres%% 这个值似乎很少被大家提到,甚至微软在官方文档中. 它返回是一个Hash Value,看乎这个值没什么用. 后来在实践也有它的妙用之处,比如在出现性能问题如LOCK时,一般先通过sys.dm_tran_locks去查看什么东西被lock,是什么级别的LOCK,是表.页.记录行?一旦定位级别,再通过查询结果中字段名为resource_description的值,与对应%%lockres%% 值匹配上.就可以很容易找到具体的LOCK位置. 例如: 当调用该值在一个有聚集索引的表…
声明:本文为原创博文,转载请注明出处. 句柄(handle)代表一种对持有资源的索引,句柄的叫法在window上较多,在unix/linux等系统上大多称之为描述符,为了抽象不同平台的差异,libuv使用统一的结构封装了不同平台的实现,接下来就看看这个抽象的过程.由于句柄的实现和系统平台有很大关系,本文只针对unix平台作源码分析. 一.抽象的开始----封装.继承.多态      libuv是用纯c语言写的(排除里面有几处内联汇编的用法),怎么还有继承呢?继承不都是c++.java.pytho…
想截取躲在后面的窗体或控件,找到了PrintWindow函数,幸运的是Autoit3也对此进行了封装以方便使用. 于是乎,将帮助文件里的_WinAPI_PrintWindow()实例改写了一下,以替代ScreenCapture系列函数: #include <WinAPIGdi.au3> #include <Clipboard.au3> HotKeySet("q", "exam") While 1 Sleep(100) WEnd Func ex…
首先感谢Lakshay Sharma 大神的指导 最近一直在研究selenium webdriver右键菜单,发现selenium webdriver 无法操作浏览器右键菜单,如图 如果我想右键另存为,根本操作不了. 也有在网上看到webdriver right click option的一些代码,拿来用发现不能用的. Actions act = new Actions(driver); WebElement link = driver.findElement(By.id("xpath"…
这篇文章实在是很难下笔,因为网上相关文章不胜枚举. 巧合的是前些天看到阮老师的一篇文章的一句话: “对我来说,博客首先是一种知识管理工具,其次才是传播工具.我的技术文章,主要用来整理我还不懂的知识.我只写那些我还没有完全掌握的东西,那些我精通的东西,往往没有动力写.炫耀从来不是我的动机,好奇才是." 对于这句话,不能赞同更多,也让我下决心好好写这篇,网上文章虽多,大多复制粘贴,且晦涩难懂,我希望能够通过这篇文章,能够清晰的提升对apply.call.bind的认识,并且列出一些它们的妙用加深记忆…