AutoItX是AutoIt3提供的針對其它編程語言和開發環境的一個組件。該組件支持ActiveX/COM/DLL調用。因此,基於AutoIt3的這個feature,你完全可以擺脫其自帶的開發環境,轉而使用你擅長的編程環境通過調用AutoItX輔助完成自動化測試的任務。個人認為這是一個進步,更是廣大工具粉絲的福音。
下面是一個在C#使用AutoItX的簡單示例。
環境IDE:Visual Studio2010
新建一個命令行工程(Consol Application Project),打開功能的引用面板,選擇COM中的AutoItX3 Type Library。
在代碼中使用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公開了那些方法。
還可以通過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幫助文檔,這里僅僅列出目錄: