AutoItX是AutoIt3提供的针对其它编程语言和开发环境的一个组件。该组件支持ActiveX/COM/DLL调用。因此,基于AutoIt3的这个feature,你完全可以摆脱其自带的开发环境,转而使用你擅长的编程环境通过调用AutoItX辅助完成自动化测试的任务。个人认为这是一个进步,更是广大工具粉丝的福音。

下面是一个在C#使用AutoItX的简单示例。

环境IDE:Visual Studio2010

新建一个命令行工程(Consol Application Project),打开功能的引用面板,选择COM中的AutoItX3 Type Library。

image

在代码中使用AutoItX的命名空间:using AutoItX3Lib;

然后New一个AutoItX3Class类的实例就可以调用诸如ControlClick之类的函数了。

示例代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using AutoItX3Lib;

namespace AutoItXTest

{

class Program

{

static void Main(string[] args)

{

AutoItX3Lib.AutoItX3Class ai = new AutoItX3Class();

ai.Run(@"calc.exe");

ai.WinActivate("[CLASS:SciCalc]");

ai.ControlClick("", "", "[ID:125]");

}

}

}

 

AutoItX3Class类的成员在对象浏览器(Object Browser)中查看如下,从这里可以看到AutoItX公开了那些方法。

image

还可以通过P/Invoke的方式在托管代码中是使用其中的静态方法,展示如下,注意DllImport的AutoItX.dll还有一个64位的版本,它们分别是:

C:\Program Files\AutoIt3\AutoItX\AutoItX3.dll或者64位上的版本——

C:\Program Files\AutoIt3\AutoItX\AutoItX3_x64.dll

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Runtime.InteropServices;

namespace AutoItXTest

{

class Program

{

public const int SW_SHOW = 6;

public const int SW_SHOWDEFAULT = 7;

public const int SW_SHOWMAXIMIZED = 8;

public const int SW_SHOWMINIMIZED = 9;

[DllImport("AutoItX3.dll", SetLastError = true, CharSet = CharSet.Auto)]

static public extern int AU3_ControlClick([MarshalAs(UnmanagedType.LPWStr)] string Title

, [MarshalAs(UnmanagedType.LPWStr)] string Text, [MarshalAs(UnmanagedType.LPWStr)] string Control

, [MarshalAs(UnmanagedType.LPWStr)] string Button, int NumClicks, int X, int Y);

[DllImport("AutoItX3.dll", SetLastError = true, CharSet = CharSet.Auto)]

static public extern int AU3_Run([MarshalAs(UnmanagedType.LPWStr)]string Run

, [MarshalAs(UnmanagedType.LPWStr)]string Dir, int ShowFlags);

[DllImport("AutoItX3.dll", SetLastError = true, CharSet = CharSet.Auto)]

static public extern void AU3_WinActivate([MarshalAs(UnmanagedType.LPWStr)]string Title

, [MarshalAs(UnmanagedType.LPWStr)]string Text);

[DllImport("AutoItX3.dll", SetLastError = true, CharSet = CharSet.Auto)]

static public extern void AU3_Sleep(int Milliseconds);

static void Main(string[] args)

{

AU3_Run("calc.exe", "", SW_SHOWMAXIMIZED);

AU3_WinActivate("[CLASS:SciCalc]", "");

AU3_Sleep(2000);

AU3_ControlClick("", "", "[ID:125]", "", 1, 0, 0);

AU3_ControlClick("", "", "[ID:125]", "", 1, 0, 0);

AU3_ControlClick("", "", "[ID:125]", "", 1, 0, 0);

}

啃一下代码:

唯一需要交代就是DllImport的静态方法列表可以通过AutoItX帮助文档找到,这里不再赘述。

在VBScript中将以创建COM对象的方式使用AutoItX的功能,如下是一段代码演示:

Set oShell = WScript.CreateObject("WScript.Shell")

Set oAutoIt = WScript.CreateObject("AutoItX3.Control")

oShell.Run "calc.exe", 1, FALSE

oAutoIt.WinWaitActive "[CLASS:SciCalc]", ""

oAutoIt.Send "1{+}1="

 

那么到底AutoItX提供了哪些COM对象可供使用呢,还是要参见AutoItX帮助文档,这里仅仅列出目录:

image

posted on 2013-03-29 14:00  一个人的天空@  阅读(5309)  评论(0编辑  收藏  举报