AutoIt 目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作.它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务.

过多专业语言不废话,google下有很多,在公司里碰到支付宝密码控件用watir无法识别的情况(确切的说是无法输入密码),困扰了好半天,突然想起用autotit来处理也许可以,稍微琢磨了下,code:

WinActivate("支付宝 - 收银台 - Windows Internet Explorer")

ControlSend("支付宝 - 收银台 - Windows Internet Explorer", "", "[CLASS:ATL:Edit; INSTANCE:1]", "password")

==>转换为watir语法

require "win32ole"

alipay = WIN32OLE.new("AutoItX3.Control")

alipay.WinActivate("支付宝") #这行可以省略

alipay.ControlSend("支付宝", "", "[CLASS:ATL:Edit; INSTANCE:1]", "1111112")

补充说明下:

文本输入语法有很多,各不相同,时间缘故还未深入研究其区别,有问题的时候不妨挨个试试^^,其他输入文本的语法列举:

1.ControlSetText("[ACTIVE]","","[CLASS:ATL:Edit; INSTANCE:1]","password")

2.Send("password",1)

->send要与click动作辅助使用(先获取控件焦点)

mouseclick("left",357,508) 或

ControlClick("阿里旺旺2009", "", "[CLASS:StandardButton;INSTANCE:8]","left",1)

总结:对于非标准的html标签的识别和操作,autoit是一个很好的解决问题的思路!

附两个案例

1.计算器加法

Run("calc.exe")

WinWaitActive("计算")

ControlClick("计算器","","1")

ControlClick("计算器","","+")

ControlClick("计算器","","2")

ControlClick("计算器","","=")

$Result = ControlGetText("计算器","",403)

if $Result == "3. " Then

FileWriteLine("c:\result.txt","正确。")

Else

FileWriteLine("c:\result.txt","错误!")

EndIf

WinClose("计算器")

2.登录聊天工具、发消息、退出

;参数变量设置

Global $userid = "zhanqiao123"     ;用户id

Global $password = "password"    ;用户password

Global $message = "autoit的测试,呵呵!"  ;发送消息内容

Global $aliwangwang = "阿里旺旺2009"   ;旺旺title

Global $wangwangTitle = $userid & "-" & $aliwangwang ;登录后的旺旺title

Global $aliwangPath = "C:\Program Files\AliWangWang\"

sign_in()        ;登录阿里旺旺

send_message()   ;查找用户,并发送旺旺消息

;sign_out()      ;注销阿里旺旺

exit_process()   ;退出阿里旺旺

Func send_message()

;功能实现:查找并发送旺旺消息

WinActivate($wangwangTitle)

;ControlSend($wangwangTitle, "", "[CLASS:EditComponent; INSTANCE:2]", $userid) ;如何清空原先已经存在内容?

$Z=wingetpos($wangwangTitle) ;获取坐标

;用户名输入

mouseclick("left",$Z[0]+100,$Z[1]+111)   ;搜索用户名输入框

Send("{HOME}+{END}{Delete}") ;清空原有内容

Send($userid,1) ;1表示全部为普通字符

Sleep(2000)

mouseclick("left",$Z[0]+100,$Z[1]+163)   ;点击搜索到的用户名

WinActivate("[CLASS:StandardFrame]") ;WinActivate("姓名") ;局限于不同用户的姓名 ;WinActivate("[ACTIVE]", "")

ControlSetText("[ACTIVE]","","",$message) ;Send("test message:{Chr(F92C)}");不支持中文

Send("{Enter}")

WinClose("[ACTIVE]")

EndFunc

Func sign_in()

If Not WinExists($windows) Then

MsgBox(0,"","请启动aliwangwang。再运行.")

Exit

EndIf

Run($aliwangPath & "AliIM.exe")

WinWait($aliwangwang)

;功能实现:登录阿里旺旺

WinActivate($aliwangwang)

$XY=wingetpos($aliwangwang) ;获取坐标

;用户名输入

mouseclick("left",$XY[0]+135,$XY[1]+208)

Send("{HOME}+{END}{Delete}") ;清空原有内容

Send($userid,1) ;1表示全部为普通字符

;密码输入

mouseclick("left",$XY[0]+135,$XY[1]+260) ;Send("{BS 18}")

Send("{HOME}+{END}{Delete}")

Send($password,1)

;登录按钮点击

mouseclick("left",$XY[0]+135,$XY[1]+380)

;如何验证登陆成功?

WinWait($wangwangTitle)

Sleep(1000)

;下面代码实现感觉没问题,但此种方式登录一直提示密码错误,奇怪,怪哉!

;WinActivate("阿里旺旺2009")

;ControlSend("阿里旺旺2009", "", "[CLASS:EditComponent;INSTANCE:2]", "zhanqiao123") ;Send("{TAB}")

;ControlSend("阿里旺旺2009", "", "[CLASS:ATL:Edit;INSTANCE:1]","stonemouse");Send("{Enter}")

;$a = ControlClick("阿里旺旺2009", "", "[CLASS:StandardButton;INSTANCE:8]","left",1)

;MsgBox(0,"登录结果",$a)

EndFunc

Func sign_out()

;功能实现:注销用户

MouseMove(1, 1) ;这样做的目的是把鼠标移开,否则刚好鼠标停留在‘菜单’上出现其他窗口,会影响下面执行

ControlClick($wangwangTitle,"","[CLASS:StandardButton; INSTANCE:1]") ;点击出现菜单的按钮

WinActivate("[CLASS:coolmenu]") ;窗口切换到‘菜单’

ControlClick("[CLASS:coolmenu]","","[CLASS:StandardButton; INSTANCE:1]") ;点击‘注销’按钮

;如何验证注销成功?

WinClose("[ACTIVE]")

EndFunc

Func exit_process()

;功能实现:注销并退出程序

MouseMove(1, 1) ;这样做的目的是把鼠标移开,否则刚好鼠标停留在‘菜单’上出现其他窗口,会影响下面执行

ControlClick($wangwangTitle,"","[CLASS:StandardButton; INSTANCE:1]") ;点击出现菜单的按钮

WinActivate("[CLASS:coolmenu]") ;窗口切换到‘菜单’

ControlClick("[CLASS:coolmenu]","","[CLASS:StandardButton; INSTANCE:2]") ;点击‘退出’按钮

;如何验证退出成功?

EndFunc

python autoit3自动化测试_autoit-解决非标准B/S自动化测试的一个很好的思路相关推荐

  1. 业务:pdf转图片问题(解决非标准pdf转图片空白问题)

    业务说明:由于业务相关要求,对接第三方PDF文件转JPG之后上传服务器,同时还进行ocr识别. 看了一下CSDN上面的一些帖子,大部分都无法处理非标准的PDF文件,比如用打印机扫描的PDF文件可能是歪 ...

  2. python中的符号是否都是英文符号_使用Python处理CSV中的非标准美式英文字符和符号...

    您的问题最有可能与MS Office套件的CP-1252"Windows Unicode"编码.如果你将它看作ASCII或UTF,你会得到时髦的字符. 你可以做两件事情: 队的MS ...

  3. Wireshark分析非标准端口号流量

    Wireshark分析非标准端口号流量 2.2.2  分析非标准端口号流量Wireshark分析非标准端口号流量 应用程序运行使用非标准端口号总是网络分析专家最关注的.关注该应用程序是否有意涉及使用非 ...

  4. python实现非标准正态分布下概率密度有关计算

    总目录:Python数据分析整理 之后马上要学习朴素贝叶斯算法了,为之后的学习做好铺垫,重新用python实现了一下数据正态性的检验.根据数据的均值方差,求出小于某个值的概率,或者根据概率求出这个值是 ...

  5. c++类对象的例子(非标准语法;请使用 ““ 来创建指向成员的指针,如何解决?)

    非标准语法:请使用 "&" 来创建指向成员的指针,如何解决? 在main.cpp中有问题 Game.cpp......#include "Game.h" ...

  6. python全栈测试开发_用于全栈自动化测试的最佳Python工具

    我知道大多数测试人员会说Java是他们创建自动化测试的首选语言. 但是我最喜欢的是Python.为什么?为什么是Python ? Al Sweigart,<自动化那些无聊的东西>的作者,P ...

  7. 在ISA Server 2004上发布使用非标准的21端口进行连接的FTP服务器

    在ISA Server 2004上发布使用非标准的21端口进行连接的FTP服务器 (只有PASV模式发布) 首先非常感谢Tom的指导,他在ISA Server 2004上给予了我许多帮助.:) Tom ...

  8. Python|线程和进程|阻塞|非阻塞|同步|异步|生成器和协程|资源竞争|进程间通信|aiohttp库|daemon属性值详解|语言基础50课:学习(11)

    文章目录 系列目录 原项目地址 第34课:Python中的并发编程-1 线程和进程 多线程编程 使用 Thread 类创建线程对象 继承 Thread 类自定义线程 使用线程池 守护线程 资源竞争 G ...

  9. 非标准分布随机数生成 - 逆变换ITM与舍选法Rejection

    统计学 - 非标准分布随机数生成 最近做了几道有关随机数生成的实验,记录下来写个总结吧,其中核心证明略. -- 2020.3.24: 20:50 首先明白一些概念,这里随机数是指服从某种分布的随机变量 ...

  10. 在Python中对子进程进行非阻塞读取

    我正在使用子流程模块来启动子流程并连接到其输出流(stdout). 我希望能够在其stdout上执行非阻塞读取. 有没有一种方法可以使.readline成为非阻塞状态,或者在调用.readline之前 ...

最新文章

  1. VRML语法基础跟简介
  2. python编程高手教程_写给编程高手的Python教程(11) 深入类和对象
  3. python3精要(35)-wxPython(1)-简介与开源协议
  4. My SQL InnoDB 1217 - Cannot delete or update a parent row:aforeign key constraint fals
  5. oracle的iw算法,[转载]Oracle日期周详解IW
  6. matlab求零空间,matlab求矩阵的零空间的一组整数基,该怎样操作?
  7. 关于用css实现的文字超出部分显示省略号
  8. IE是怎么处理meta steam的编码的 那100+个xss
  9. Spring AOP代理时 ClassCastException: $Proxy0 cannot be cast to (类型转换错误)
  10. matlab迭代算法实例_【优化求解】基于NSGA2的求解多目标柔性车间调度算法
  11. kappa一致性检验教程_R语言中的试验一致性检验分析 kappa检验和McNemar检验
  12. 拉钩网前端项目实战02
  13. AVC编码中的规格 :High、Baseline、Main什么意思?还有High@L3.0、High@L4.0、High@L5.1等
  14. centos7安装或升级Google chrome、安装Firefox浏览器详细过程及设置桌面快捷方式
  15. mac可用的vpb_有什么让你相见恨晚的 MacBook 神器?
  16. K8S高可用集群架构部署 dashborad插件部署 Nginx实现动静分离 K8S在线升级
  17. windriver下pcmcia驱动程序编写的疑问
  18. GoLang下载安装
  19. 站长导航系统源码-修复版
  20. 2021学习前端开发有前途吗?(建议收藏)

热门文章

  1. 使用百度BAE部署java应用
  2. SCI-HUB最新文献网站
  3. “大数据分析”和“数据分析”的区别与联系
  4. 《windows核心编程》第6章 线程基础
  5. C#Winform实现手写录入签名与保存为透明png图片
  6. 云计算基础1-云计算时代的发展-天翼云电脑
  7. 德鲁克的时间管理法—《可以量化的…
  8. Python大作业-爬取成都链家租房信息(大作业)源码
  9. R语言ROC分析、ROC曲线可视化及最佳阈值计算(threshold、cutoff)
  10. mysql怎么打开db文件_mysql的db文件怎么打开?