AutoIt是什么?
AutoIt是一种免费的脚本语言,专为自动化windows GUI和常规脚本而设计。它结合使用鼠标移动、击键和窗口控制操作来自动执行Selenium Webdriver无法完成的任务。
在本AutoIt教程中,将了解-
- 为什么使用AutoIt?
- 如何下载和安装AutoIT
- 通过元素标识符查找元素,并在AutoIT编辑器上编写脚本。
- Selenium WebDriver中的AutoIT上传文件
为什么使用AutoIt?
Selenium是一个开源工具,设计用于在不同的浏览器上自动化基于Web的应用程序,但可以处理应用程序中的窗口GUI和非HTML弹出窗口。Selenium中的AutoIt是必需的,因为Selenium不处理这些基于窗口的活动。
继续学习本AutoIt教程,我们将学习如何使用AutoIt在Selenium web驱动程序中上传文件。在这里,需要三个工具
- Selenium WebDriver
- AutoIT编辑器和元素标识符
- 要自动化的窗口
如何下载和安装AutoIT
步骤1):转到这个链接。
步骤2):将鼠标悬停在“Autoit”和“Autoit Editor”下拉菜单上。
步骤3)单击“AutoIT”下载选项。
步骤4):点击“下载Autoit”按钮下载“Autoit”。
步骤5):现在点击“下载”按钮下载“Autoit编辑器”。
步骤6):点击链接,如下图所示。
下载后,将得到两个安装文件,如下面的屏幕所示,第一个是AutoIt版本3安装程序,第二个是Scitautoit3安装文件。
步骤6):要安装AutoIT-逐个单击两个AutoIT设置。
步骤7):成功安装后-打开AutoIT编辑器。
转到“C:Files(X86)3”
点击‘SciTE.exe’文件,AutoIT编辑器打开,如下图所示。
步骤8):现在打开元素标识符。
转到“C:Files(X86)3”
然后点击‘Au3Info.exe’文件,元素标识符打开,如下面的屏幕所示。
注意:使用完此元素标识符后,需要手动关闭,它不会自动关闭。
通过元素标识符查找元素,并在AutoIT编辑器上编写脚本。
在此基础上,我们将了解如何使用AutoIT编辑器,如何通过AutoIT元素标识符(元素标识符是类似Selenium IDE的工具,标识符查找窗口GUI或非HTML弹出窗口的元素,并提供标题、类、实例等元素属性)在文件上传窗口找到元素,以及如何使用3种方法在AutoIT编辑器上编写脚本。
例如:我们将使用Guru99的“给我们写信”页面上传简历(Doc文件)。
从“给我们写信”页面点击“选择文件”按钮后,我们需要调用AutoIT脚本。在通过下面的语句点击‘Choose File’(选择文件)后,控件立即转移到Autoit,该语句负责上传部件。
Runtime.getRuntime().exec("E:\\AutoIT\\FileUpload.exe");
最后,当我们运行Selenium脚本时-它将填写表单->上传简历->提交表单。
步骤1):现在打开元素标识符-转到‘C:Files(X86)3’,点击‘Au3Info.exe’文件,元素标识符窗口打开,如下图所示。
步骤2):现在点击“选择文件”打开文件上传器窗口,这是windows的活动。
步骤3):在文件上传窗口的“文件名”框元素上拖动查找器工具,用箭头找到基本属性信息,如下图所示。
我们可以获得属性的值,即title=‘Open’,class=这些值用于编写AutoIT脚本示例,如下面步骤4所述。
步骤4):现在打开AutoIT脚本编辑器,转到‘C:Files(X86)3’,然后单击步骤7所示的‘SciTE.exe’。 st 主题。
开始编写用于选择要上传的文件的脚本。
我们可以根据需要在脚本中使用很多方法,但现在我们将重点介绍以下方法,因为这些方法是编写文件上传脚本所必需的:
- ControlFocus(“title”,“text”,control ID)//将输入焦点设置到窗口上的给定控件。
- ControlSetText(“title”,“text”,control ID,“需要上传的文件路径”)//设置控件的文本
- ControlClick(“title”,“text”,control ID)//向给定控件发送鼠标单击命令。
可以看到显示了许多方法,如下面的屏幕所示。AutoIT的好特性是它有点像Eclipse,可以向建议一些方法。
在AutoIT编辑器中,我们选择了“控制焦点”方法。元素标识符已经打开,我们可以通过最大化它来打开它。
现在,我们将从元素标识符中获取‘ControlFocus’和‘ControlSetText’方法的值,因为这两个方法作用于相同的元素,即“打开”按钮。
ControlFocus方法的参数值:
此方法将焦点设置到文件上载程序窗口的“文件名”文本框上。
- 第一个参数标题为“Open”。
- 我们忽略第二个参数,文本不是必需的。
- 第三个参数control ID是class=‘Edit’和Instance=‘1’的组合,即。‘编辑1’
Java ControlFocus("Open","","Edit1") // This method sets input focus to 'File name' text box.
ControlSetText方法的参数值:
此方法用于在“文件名”文本框中定义需要上传的文件的路径。换句话说,我们可以说此方法用于将文本设置为输入元素。
- 第一个参数标题为“Open”。
- 我们忽略第二个参数,文本不是必需的。
- 第三个参数control ID是class=‘Edit’和Instance=‘1’的组合,即“Edit1”。
- 4参数new text,我们传递需要上传的文件的路径。
Java ControlSetText("Open","","Edit1","E:\Resume\resume.doc") // This method input file path of a control.
执行上述步骤后,不要关闭窗口(编辑器和元素标识符),保持打开状态。需要再次打开文件上传器窗口,以找到“打开”按钮的属性,如下面的步骤5所示。
步骤5):现在在文件上传窗口的[打开]按钮元素上拖动查找器工具,即可找到基本属性信息。
以前的值(即‘文件名’文本框的属性)用新的va覆盖可以看到class属性现在被更改为“button”,它以前在AutoIT元素标识符窗口中是“edit”。
我们可以获得属性的值,即title=‘Open’,class=‘B这些值用于编写Autoit脚本,如下所述。
ControlClick方法的参数值:
此方法单击文件上载程序窗口的“打开”按钮。
- 第一个参数标题为“Open”。
- 我们忽略第二个参数;文本不是必需的。
- 第三个参数control ID是类和实例的组合,即“Button1”。
ControlClick("Open","","Button1") //This method click on 'Open' button of file uploader.
步骤6):在下面屏幕中,可以看到AutoIT脚本已经完成,可以处理文件上载程序。现在,可以关闭元素标识符,并在给定位置(E:)将脚本另存为“FileUpload”。
现在不能直接执行此脚本,需要编译此脚本。
对于编译这个脚本,有两个选项“编译脚本x64”和“编译脚本x86”,如果有Windows 32位机器,那么可以选择“编译脚本x86”,而对于Windows 64位机器,可以选择“编译脚本x64”。
步骤7):编译后生成的‘FileUpload exe’文件,如下图所示。现在,我们可以在Selenium Webdriver脚本中使用该文件。
现在,我们将在Selenium Web驱动程序中使用此AutoIT脚本。查看下面的输出。
Selenium WebDriver中的AutoIT上传文件
在Selenium脚本中,我们找到表单的元素,并根据需要在每个元素中填写数据,通过执行AutoIT脚本生成的AutoIT exe文件来上传‘suree.doc’文件,然后允许在Selenium AutoIT脚本中提交表单。
- 打开Eclipse并开始编写代码。
- 当Selenium点击选择文件按钮时,文件上传框打开。
- 然后我们需要调用AutoIT脚本,控制立即转移到AutoIT,以便上传文件,然后控制发送回Selenium,如下所示。
步骤1):在Eclipse中开发Selenium脚本。
- 运行时类允许脚本与运行脚本的环境交互。
- getRuntime() 获取与此进程关联的当前运行时。
- exec() 方法执行AutoIT脚本(FileUpload.exe)。
Runtime.getRuntime().exec("E:\\AutoIT\\FileUpload.exe");
上面的行将调用Selenium中的AutoIT脚本并上传文件。
步骤2):在Eclipse中执行Selenium脚本。
importjava.io.IOException;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class FileUpload {
public static void main(String[] args) throws IOException {
WebDriver driver=new FirefoxDriver();
driver.get("http://www.itxiaonv.com/test/autoit.html");
driver.findElement(By.id("postjob")).click();
driver.findElement(By.id("input_3")).sendKeys("Gaurav");
driver.findElement(By.id("id_4")).sendKeys("This email address is being protected from spambots. You need JavaScript enabled to view it.");
driver.findElement(By.id("input_4")).click();
// below line execute the AutoIT script .
Runtime.getRuntime().exec("E:\\AutoIT\\FileUpload.exe");
driver.findElement(By.id("input_6")).sendKeys("AutoIT in Selenium");
driver.findElement(By.id("input_2")).click();
driver.close();
}
}
步骤3):验证输出,Resume.doc文件上传成功,并显示感谢消息。
结论:
- 已下载并安装元素标识符和AutoIT编辑器。
- 已打开要在其上执行操作的站点。
- 元素标识符标识文件上载程序窗口的元素。
- 借助元素标识符在编辑器中编写AutoIT脚本。
- Selenium Webdriver脚本中使用Autoit脚本。
- 已执行Selenium脚本。
- 输出:已成功上载文件。