• 自动化之UI(autoit)


    自动化

    说到自动化,我真的很不喜欢UI这层去做实践。前置条件要求比较严谨,如果不满足特定的前置条件,那么成本实在太大了。

    投入与产出差过大,效果打折扣。从互联网来说,UI自动化是入门门槛很低的一种实践,但是互联网能满足这种前置条件的产品感觉并不多。

    其一:它需要产品是维稳的,即变动不是非常的大。

    其二:对于元素会有一定的要求,比如web,那么对html的页面元素就会希望开发能规范ID或者class等;对于PC应用,也则需要有可识别的ID,包括移动APP也是。

    常见使用的工具一般集合在:selenium/uiautomation/appium/monkey等,早之前还有QTP。

    我最早练手是使用的QTP,后面陆陆续续也用过一些其他的,比如web自动化还做了浏览器js插件去适配测试。

    后面,有接收到任务要求做PC应用程序的自动化,当时认为QTP太大了,而且需要破解等比较麻烦,就改用了AutoIT工具去实现。

    AutoIT这款工具,大部分是被用来做游戏外挂的,所以想做外挂的人不要局限于按键精灵。

    AutoIT范例

     首先介绍下AutoIt常用的两个菜单项,如下图:

    1.帮助文档

    2.autoit window info分为32位系统识别和64位系统识别,识别程序应用的元素。类似于selenium抓取的html元素,又类似于uiautomationview这个。

    识别元素界面打开如下:请记住红色圈圈内图标。抓取元素就是靠点击该按钮不放手拖动到你需要的产品上去识别。粉红部分就是抓取到的信息

     案例脚本如下:

     1 #cs
     2 对计算器进行自动化测试
     3 自动计算4+5=9
     4 结束后关闭计算器窗口
     5 #ce
     6 
     7 Calc()
     8 
     9 Func Calc()
    10    Local $time=2000;
    11    ;运行计算器
    12    Run("calc.exe");
    13    ; 等待1s,计算器窗口出现
    14    Local $hWnd = WinWait("[CLASS:CalcFrame]", "", 1)
    15    ;激活该窗口,即将光标定位道该窗口
    16    WinActivate("[CLASS:CalcFrame]");
    17    ;点击4
    18    ControlClick($hWnd, "", "Button4");
    19    ; 等待2s观察效果.
    20     Sleep($time);
    21    ;点击+
    22    ControlClick($hWnd, "", "Button23");
    23    Sleep($time);
    24    ;点击5
    25    ControlClick($hWnd, "", "Button10");
    26    Sleep($time);
    27    ;点击=
    28    ControlClick($hWnd, "", "Button28");
    29    Sleep($time);
    30    WinClose("[CLASS:CalcFrame]");
    31 
    32 EndFunc   ;==>Calc

     AutoIt支持其他语言

      AutoIt支持VBScript脚本,范例如下:

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '
    ' Example WSH Script (VBScript)
    '
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
    ' Require Variants to be declared before used
    Option Explicit 
    
    
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Declare Variables & Objects
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
    Dim oShell
    Dim oAutoIt
    
    
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Initialise Variables & Objects
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oAutoIt = WScript.CreateObject("AutoItX3.Control")
    
    
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Start of Script
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
    WScript.Echo "This script will run some test calculations"
    
    oShell.Run "calc.exe", 1, FALSE
    
    ' Wait for the calc window to become active
    oAutoIt.WinWaitActive "Calculator", ""
    
    ' Send some keystokes to calc
    oAutoIt.Send "2*2="
    oAutoIt.Sleep 500
    oAutoIt.Send "4*4="
    oAutoIt.Sleep 500
    oAutoIt.Send "8*8="
    oAutoIt.Sleep 500
    oAutoIt.WinClose "Calc", ""
    oAutoIt.WinWaitClose "Calc", ""
    
    WScript.Quit

    AutoIt支持C++,同时也支持java,VB, Delphi, C等 。

    均可以在以上语言开发的同时嵌入Autoit。

    备注

    以上脚本适用于win32标准控件框架,当你的框架并非win32标准时,可以使用autoit走相对坐标去实现或者使用sikuli去实现,总之,自动化是应产品而选择方案的。

    详细脚本就不解释了,可以参考手册,手册内有非常多的案例。

    做自动化或者说测试,个人感觉需要培养一种思路,而不是说会去用种工具就可以了。

    同时,希望有志于往测试发展的人,还是希望至少能熟悉一种语言,这真的是优势,熟悉语言也可以为工作提供不少的帮助。

    文章写的这些仅仅只是入门的一种,其实需要培养的思路是有助于去做一些框架的架设等事情,其实可以去熟悉下微软的SDTE。

  • 相关阅读:
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    Java学习哈希表2
    Java学习哈希表1
  • 原文地址:https://www.cnblogs.com/VVsky/p/9313952.html
Copyright © 2020-2023  润新知