Selenium中的AutoIT教程:如何使用它?
Selenium中的AutoIt是什么?
AutoIt 是一种免费的脚本语言,旨在自动化Windows GUI和通用脚本。它结合使用鼠标移动、击键和窗口控制操作来自动化Selenium WebDriver无法完成的任务。
如何下载和安装AutoIT
步骤1):访问此链接。
步骤2):将鼠标悬停在“Autoit”和“Autoit Editor”下拉菜单上。
步骤3) 单击“AutoIT”下载选项。
步骤4):点击“下载Autoit”按钮下载“Autoit”。
步骤5):现在点击“下载”按钮下载“Autoit编辑器”。
步骤6) 点击如下图所示的链接。
下载后,您将获得两个安装文件,如下图所示,第一个是 AutoIt version 3 安装程序,第二个是 Scitautoit3。
步骤7):要安装AutoIT,请一个接一个地点击两个AutoIT安装程序。
步骤8):成功安装后,打开AutoIT编辑器。
转到“C:\Program Files (x86)\AutoIt3\SciTE”
并点击“SciTE.exe”文件,AutoIT编辑器将如下图所示打开。
步骤9):现在打开元素标识符。
转到“C:\Program Files (x86)\AutoIt3”
并点击“Au3Info.exe”文件,元素标识符将如下图所示打开。
注意:完成此元素标识符后,您需要手动关闭它,它不会自动关闭。
如何在Selenium中使用AutoIT
在本节中,我们将介绍如何使用AutoIt编辑器,如何通过AutoIT元素标识符(元素标识符是一种类似于Selenium IDE的工具,它可以找到窗口GUI或非HTML弹出窗口的元素,并提供元素的属性,如标题、类、实例)查找文件上传器窗口上的元素,以及如何使用3种方法在AutoIT编辑器上编写脚本。
例如:我们将使用guru99的“联系我们”页面上传简历(Doc文件)。
点击“联系我们”页面上的“选择文件”按钮后,我们需要调用AutoIT脚本。点击“选择文件”后,控制权立即转移到AutoIT,以下语句负责上传部分。
Runtime.getRuntime().exec("E:\\AutoIT\\FileUpload.exe");
最后,当我们运行Selenium脚本时,它将填写表单 -> 上传简历 -> 提交表单。
步骤1):现在打开元素标识符——转到“C:\Program Files (x86)\AutoIt3”并点击“Au3Info.exe”文件,元素标识符窗口将如下图所示打开。
步骤2):现在点击“选择文件”打开文件上传器窗口,这是一个Windows活动。
步骤3):将查找工具拖到文件上传器窗口的“文件名”框元素上,以查找基本属性信息,如下图箭头所示。
我们可以获取属性值,即title='Open'、class='Edit'和instance='1',如下图所示。这些值用于编写AutoIT脚本示例,如下步骤4所述。
步骤4):现在打开AutoIT脚本编辑器,转到“C:\Program Files (x86)\AutoIt3\SciTE”并点击“SciTE.exe”,如第一主题的步骤7所示。
开始编写脚本以选择要上传的文件。
有许多方法可供我们根据需要用于脚本,但现在我们将重点关注以下方法,因为这些方法是编写文件上传脚本所必需的。
- ControlFocus(” 标题 “,” 文本 “,controlID ) //将输入焦点设置到窗口上的给定控件。
- ControlSetText(” 标题 “,” 文本 “,controlID ,” 需要上传的文件路径 ” ) //设置控件的文本。
- ControlClick(” 标题 “,” 文本 “,controlID ) //向给定控件发送鼠标点击命令。
如下图所示,显示了许多方法。AutoIT的一个优点是它有点像Eclipse,可以为您提供一些方法建议。
在AutoIT编辑器中,我们选择了 “control focus” 方法。元素标识符已打开并最小化,因为元素已在上述步骤3中标识。我们可以通过最大化它来打开它。
现在,我们将从元素标识符中获取“ControlFocus”和“ControlSetText”方法的参数值,因为这些方法作用于相同的元素,即“文件名”文本框,但“ControlClick”方法需要捕获不同元素的值,即“打开”按钮。
ControlFocus 方法的参数值
此方法将焦点设置到文件上传器窗口的“文件名”文本框。
- 第一个参数 title 是“打开”。
- 我们忽略第二个参数,text 不需要。
- 第三个参数 controlID 是类名='Edit'和实例='1'的组合,即“Edit1”。
ControlFocus("Open","","Edit1") // This method sets input focus to 'File name' text box.
ControlSetText 方法的参数值
此方法用于定义需要上传到“文件名”文本框中的文件路径。换句话说,此方法用于设置输入元素的文本。
- 第一个参数 title 是“打开”。
- 我们忽略第二个参数,text 不需要。
- 第三个参数 controlID 是类名='Edit'和实例='1'的组合,即“Edit1”。
- 第四个参数 new text, 我们传入需要上传的文件路径。
ControlSetText("Open","","Edit1","E:\Resume\resume.doc") // This method input file path of a control.
完成以上步骤后,请勿关闭窗口(编辑器和元素标识符),请保持它们打开。您需要再次打开文件上传器窗口,以查找“打开”按钮的属性,如下步骤5所示。
步骤5):现在将查找工具拖到文件上传器窗口的“打开”按钮元素上,以查找基本属性信息。
以前的值(即“文件名”文本框的属性)被“打开”按钮的新值覆盖。您可以看到在AutoIT元素标识符窗口中,类属性现在已更改为“button”,而之前是“edit”。
我们可以获取属性值,即title='Open'、class='Button'和instance='1',如下图所示。这些值用于编写Autoit脚本,如下所述。
ControlClick 方法的参数值
此方法点击文件上传器窗口的“打开”按钮。
- 第一个参数 title 是“打开”。
- 我们忽略第二个参数;text 不需要。
- 第三个参数 controlID 是类和实例的组合,即“Button1”。
ControlClick("Open","","Button1") //This method click on 'Open' button of file uploader.
步骤6):您可以在下面的屏幕中看到,AutoIT脚本已完成以处理文件上传器。现在您可以关闭元素标识符并将脚本保存为“FileUpload”到指定位置(E:\AutoIT)。
现在您不能直接执行此脚本,您需要编译此脚本。
要编译此脚本,您有两个选项:“ compile script x64 ”和“ compile script x86 ”,如果您的Windows是32位机器,则选择“ compile script x86 ”,如果是64位机器,则选择“ compile script x64 ”。
步骤7):“FileUpload exe” 文件在编译后生成,您可以在下面的屏幕中看到。现在我们可以在Selenium WebDriver脚本中使用此文件。
现在我们将在Selenium WebDriver中使用此AutoIT脚本。请查看下面的输出。
使用Autoit在Selenium中上传文件
在Selenium脚本中,我们找到表单的元素并根据需要填写每个元素的数据,然后通过执行由AutoIT脚本生成的AutoIT exe文件上传“resume.doc”文件,然后允许在Selenium AutoIt脚本中提交表单。
- 打开Eclipse并开始编写代码。
- 当Selenium点击“选择文件”按钮时,文件上传框会打开。
- 然后我们需要调用AutoIT脚本,控制权立即转移到AutoIT以上传文件,然后控制权返回给Selenium,如下所示。
步骤1):在Eclipse中开发Selenium脚本。
- Runtime 类允许脚本与脚本运行的环境进行交互。
- 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("https://demo.guru99.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("test.test@gmail.com"); 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?
Selenium是一个开源工具,旨在自动化不同浏览器上的基于Web的应用程序,但要处理应用程序中的窗口GUI和非HTML弹出窗口。由于Selenium无法处理这些基于窗口的活动,因此需要AutoIt。
继续本AutoIt教程,我们将学习如何使用AutoIt在Selenium WebDriver中上传文件。这里我们需要三个工具才能完成此操作。
- Selenium Webdriver
- AutoIT 编辑器和元素标识符
- 您要自动化的窗口
结论
- 已下载并安装元素标识符和AutoIT编辑器。
- 已打开要进行操作的网站。
- 元素标识符识别文件上传器窗口的元素。
- 在编辑器的帮助下,使用元素标识符准备了AutoIT脚本。
- Autoit脚本用于Selenium webdriver脚本。
- 执行了Selenium脚本。
- 输出:文件上传成功。