如何在Selenium WebDriver中使用AutoIT:文件上传

AutoIt是什么?

AutoIt是一种免费的脚本语言,专为自动化windows GUI和常规脚本而设计。它结合使用鼠标移动、击键和窗口控制操作来自动执行Selenium Webdriver无法完成的任务。

在本AutoIt教程中,将了解-

  • 为什么使用AutoIt?
  • 如何下载和安装AutoIT
  • 通过元素标识符查找元素,并在AutoIT编辑器上编写脚本。
  • Selenium WebDriver中的AutoIT上传文件

为什么使用AutoIt?

Selenium是一个开源工具,设计用于在不同的浏览器上自动化基于Web的应用程序,但可以处理应用程序中的窗口GUI和非HTML弹出窗口。Selenium中的AutoIt是必需的,因为Selenium不处理这些基于窗口的活动。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

继续学习本AutoIt教程,我们将学习如何使用AutoIt在Selenium web驱动程序中上传文件。在这里,需要三个工具

  • Selenium WebDriver
  • AutoIT编辑器和元素标识符
  • 要自动化的窗口

如何下载和安装AutoIT

步骤1):转到这个链接。

步骤2):将鼠标悬停在“Autoit”和“Autoit Editor”下拉菜单上。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

步骤3)单击“AutoIT”下载选项。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

步骤4):点击“下载Autoit”按钮下载“Autoit”。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

步骤5):现在点击“下载”按钮下载“Autoit编辑器”。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

步骤6):点击链接,如下图所示。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

下载后,将得到两个安装文件,如下面的屏幕所示,第一个是AutoIt版本3安装程序,第二个是Scitautoit3安装文件。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

步骤7):要安装AutoIT-逐个单击两个AutoIT设置。

步骤8):成功安装后-打开AutoIT编辑器。

转到“C:Files(X86)3”

How to use AutoIT with Selenium
How to use AutoIT with Selenium

点击‘SciTE.exe’文件,AutoIT编辑器打开,如下图所示。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

步骤9):现在打开元素标识符。

转到“C:Files(X86)3”

How to use AutoIT with Selenium
How to use AutoIT with Selenium

然后点击‘Au3Info.exe’文件,元素标识符打开,如下面的屏幕所示。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

注意:使用完此元素标识符后,需要手动关闭,它不会自动关闭。

通过元素标识符查找元素,并在AutoIT编辑器上编写脚本。

在此基础上,我们将了解如何使用AutoIT编辑器,如何通过AutoIT元素标识符(元素标识符是类似Selenium IDE的工具,标识符查找窗口GUI或非HTML弹出窗口的元素,并提供标题、类、实例等元素属性)在文件上传窗口找到元素,以及如何使用3种方法在AutoIT编辑器上编写脚本。

例如:我们将使用Guru99的“给我们写信”页面上传简历(Doc文件)。

从“给我们写信”页面点击“选择文件”按钮后,我们需要调用AutoIT脚本。在通过下面的语句点击‘Choose File’(选择文件)后,控件立即转移到Autoit,该语句负责上传部件。 Runtime.getRuntime().exec(“E:\AutoIT\FileUpload.exe”);

最后,当我们运行Selenium脚本时-它将填写表单->上传简历->提交表单。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

步骤1):现在打开元素标识符-转到‘C:Files(X86)3’,点击‘Au3Info.exe’文件,元素标识符窗口打开,如下图所示。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

步骤2):现在点击“选择文件”打开文件上传器窗口,这是windows的活动。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

步骤3):在文件上传窗口的“文件名”框元素上拖动查找器工具,用箭头找到基本属性信息,如下图所示。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

我们可以获得属性的值,即title=‘Open’,class=这些值用于编写AutoIT脚本示例,如下面步骤4所述。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

步骤4):现在打开AutoIT脚本编辑器,转到‘C:Files(X86)3’,然后单击步骤7所示的‘SciTE.exe’。

开始编写用于选择要上传的文件的脚本。

我们可以根据需要在脚本中使用很多方法,但现在我们将重点介绍以下方法,因为这些方法是编写文件上传脚本所必需的:

  1. ControlFocus(“title”,“text”,control ID)//将输入焦点设置到窗口上的给定控件。
  2. ControlSetText(“title”,“text”,control ID,“需要上传的文件路径”)//设置控件的文本
  3. ControlClick(“title”,“text”,control ID)//向给定控件发送鼠标单击命令。

可以看到显示了许多方法,如下面的屏幕所示。AutoIT的好特性是它有点像Eclipse,可以向建议一些方法。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

在AutoIT编辑器中,我们选择了“控制焦点”方法。元素标识符已经打开,我们可以通过最大化它来打开它。

现在,我们将从元素标识符中获取‘ControlFocus’和‘ControlSetText’方法的值,因为这两个方法作用于相同的元素,即“打开”按钮。

ControlFocus方法的参数值:

此方法将焦点设置到文件上载程序窗口的“文件名”文本框上。

  • 第一个参数标题为“Open”。
  • 我们忽略第二个参数,文本不是必需的。
  • 第三个参数control ID是class=‘Edit’和Instance=‘1’的组合,即。‘编辑1’

    ControlFocus("Open","","Edit1") // This method sets input focus to 'File name' text box.        
How to use AutoIT with Selenium
How to use AutoIT with Selenium

ControlSetText方法的参数值:

此方法用于在“文件名”文本框中定义需要上传的文件的路径。换句话说,我们可以说此方法用于将文本设置为输入元素。

  • 第一个参数标题为“Open”。
  • 我们忽略第二个参数,文本不是必需的。
  • 第三个参数control ID是class=‘Edit’和Instance=‘1’的组合,即“Edit1”。
  • 4参数new text,我们传递需要上传的文件的路径。

    ControlSetText("Open","","Edit1","E:\Resume\resume.doc") // This method input file path of a control.               
How to use AutoIT with Selenium
How to use AutoIT with Selenium

执行上述步骤后,不要关闭窗口(编辑器和元素标识符),保持打开状态。需要再次打开文件上传器窗口,以找到“打开”按钮的属性,如下面的步骤5所示。

步骤5):现在在文件上传窗口的[打开]按钮元素上拖动查找器工具,即可找到基本属性信息。

以前的值(即‘文件名’文本框的属性)用新的va覆盖可以看到class属性现在被更改为“button”,它以前在AutoIT元素标识符窗口中是“edit”。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

我们可以获得属性的值,即title=‘Open’,class=‘B这些值用于编写Autoit脚本,如下所述。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

ControlClick方法的参数值:

此方法单击文件上载程序窗口的“打开”按钮。

  • 第一个参数标题为“Open”。
  • 我们忽略第二个参数;文本不是必需的。
  • 第三个参数control ID是类和实例的组合,即“Button1”。

    ControlClick(“Open”,”“,”Button1″) //This method click on ‘Open’ button of file uploader.

How to use AutoIT with Selenium
How to use AutoIT with Selenium

步骤6):在下面屏幕中,可以看到AutoIT脚本已经完成,可以处理文件上载程序。现在,可以关闭元素标识符,并在给定位置(E:)将脚本另存为“FileUpload”。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

现在不能直接执行此脚本,需要编译此脚本。

对于编译这个脚本,有两个选项“编译脚本x64”和“编译脚本x86”,如果有Windows 32位机器,那么可以选择“编译脚本x86”,而对于Windows 64位机器,可以选择“编译脚本x64”。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

步骤7):编译后生成的‘FileUpload exe’文件,如下图所示。现在,我们可以在Selenium Webdriver脚本中使用该文件。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

现在,我们将在Selenium Web驱动程序中使用此AutoIT脚本。查看下面的输出。

Selenium WebDriver中的AutoIT上传文件

在Selenium脚本中,我们找到表单的元素,并根据需要在每个元素中填写数据,通过执行AutoIT脚本生成的AutoIT exe文件来上传‘suree.doc’文件,然后允许在Selenium AutoIT脚本中提交表单。

  • 打开Eclipse并开始编写代码。
  • 当Selenium点击选择文件按钮时,文件上传框打开。
  • 然后我们需要调用AutoIT脚本,控制立即转移到AutoIT,以便上传文件,然后控制发送回Selenium,如下所示。
How to use AutoIT with Selenium
How to use AutoIT with Selenium

步骤1):在Eclipse中开发Selenium脚本。

  • 运行时类允许脚本与运行脚本的环境交互。
  • getRuntime() 获取与此进程关联的当前运行时。
  • exec() 方法执行AutoIT脚本(FileUpload.exe)。

    Runtime.getRuntime().exec(“E:\AutoIT\FileUpload.exe”);

上面的行将调用Selenium中的AutoIT脚本并上传文件。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

步骤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文件上传成功,并显示感谢消息。

How to use AutoIT with Selenium
How to use AutoIT with Selenium

结论:

  • 已下载并安装元素标识符和AutoIT编辑器。
  • 已打开要在其上执行操作的站点。
  • 元素标识符标识文件上载程序窗口的元素。
  • 借助元素标识符在编辑器中编写AutoIT脚本。
  • Selenium Webdriver脚本中使用Autoit脚本。
  • 已执行Selenium脚本。
  • 输出:已成功上载文件。

IT赶路人

专注IT知识分享