selenium中怎么使用autoit
程序员文章站
2022-07-02 14:47:18
...
写在前面:此文为转载文章,侵删。原文链接:How to use AutoIT with Selenium,由于本人英语较差,请只做参考。
Selenium是一种开源工具,它的设计目的是自动化测试不同浏览器上基于web的应用程序,它被设计成在不同的浏览器上自动化基于web的应用程序,但在应用程序中处理窗口GUI和非HTML弹出窗口。由于这些基于窗口的活动不是由Selenium处理的,所以需要AutoIT。
AutoIt
v3也是免费软件。它使用鼠标移动、击键和窗口控制操作来自动完成一项任务,这是由selenium webdriver不可能完成的任务。
接下来,我们将学习如何在selenium
webdriver中使用autoIT上传文件。为了达到这个目的,我们需要三个工具。
- Selenium Webdriver
- AutoIT编辑器和元素标识符
- 您想要自动化的窗口
如何下载和安装AutoIT
通过元素查找器查找元素并在AutoIt编辑器上编辑脚本
在selenium中通过AutoIt上传文件
如何下载和安装AutoIT
- 访问这个网址:https://www.autoitscript.com/site/autoit/downloads/
- 在AutoIt和AutoIt Editor处下拉菜单
- 点击“AutoIT”下载选项。
- 点击“Download
AutoIt”按钮下载“Autoit”
-
现在通过点击“Download”按钮下载“Autoit Editor”。
- 如下所示点击链接。 下载之后我们将会得到如下图所示的两个安装文件,一个是autoit-v3-setup,另一个是SciTE4AutoIt3。
- 按照步骤分别安装上面两个程序
-
成功安装后,打开AutoIT
Editor。
打开“C:\Program Files (x86)\AutoIt3\SciTE” , 并双击“SciTE.exe” ,会打开AutoIt Editor。 - 打开元素识别器
打开“C:\Program Files (x86)\AutoIt3”,并双击打开“Au3Info.exe”,会打开AutoIt 元素识别器(注意:使用完毕后,需手动关闭)
通过元素识别器查找元素并在AutoIt编辑器上编辑脚本
在这一部分,我们将看到以下内容,通过AutoIt识别器,如何在文件上传窗口找到元素(元素识别器是一个类似selenium
IDE的工具,元素识别器找到窗口GUI或非HTML弹出窗口的元素,并提供元素的属性,比如 title, class, instance),以及如何使用3个方法在AutoIT
Editor中编写脚本。
例子:我们将使用guru99网站的“Write
to us”页面来上传简历。
点击“Write
to us”页面的“选择文件”按钮后,我们需要调用AutoIT脚本。在点击“选择文件”后,控件立即转到autoit,autoit负责上传部分。
Runtime.getRuntime().exec("E:\\AutoIT\\FileUpload.exe");
最后,当我们运行selenium脚本时,它将填写表单——>上传简历——>提交表单。
打开文件识别器-先打开目录“C:\Program Files (x86)\AutoIt3”,并双击打开“Au3Info.exe”。
现在打开文件上传窗口,点击“选择文件”,这是windows活动
将finder工具拖动到File uploader窗口的“文件名”框元素中,找到如下图所示的基本属性信息
我们可以得到属性的值。title='Open', class='Edit' 和 instance='1' 。这些值在步骤4中用于编写AutoIT脚本。
现在打开AutoIT script editor。进入目录“C:\Program Files (x86)\AutoIt3\SciTE”,打开“SciTE.exe”。
现在将finder工具拖放到file uploader窗口的“Open”按钮元素上,以找到基本的属性信息。
先前的值(就是“File name”文本框的属性值)会被“open”按钮的属性值覆盖。可以看到class属性现在被更改为“button”,以前是“edit”。
我们可以获得如下图所以的属性值,其中title='Open', class='Button' and instance='1'。这些值用于编写Autoit脚本,如下所示。
ControlClick方法的参数值:
1、第一个参数标题为“open”。
2、忽略第二个参数,此处不需要。
3、第三个参数是class ='Button'和Instance ='1 '的组合。就是“Button1”。
下面可以看到,处理文件上传程序的AutoIT脚本已经完成。现在可以关闭元素识别器并将脚本以“FileUpload”的名字保存在给定位置(E:/ AutoIT)。
现在不能直接执行这个脚本,首先需要编译这个脚本。对于编译这个脚本,你有两个选项 " compile script x64 " and " compile script x86 ",如果你是32位的机器就选择 " compile script x86 ",64位机器就选择" compile script x64 "。
如下图所示,编译后生成文件“FileUpload exe”。现在就可以在selenium webdriver程序中使用这个文件。
现在我们将在Selenium webdriver中使用这个AutoIT脚本。检查后面的输出。
现在打开文件上传窗口,点击“选择文件”,这是windows活动
将finder工具拖动到File uploader窗口的“文件名”框元素中,找到如下图所示的基本属性信息
我们可以得到属性的值。title='Open', class='Edit' 和 instance='1' 。这些值在步骤4中用于编写AutoIT脚本。
现在打开AutoIT script editor。进入目录“C:\Program Files (x86)\AutoIt3\SciTE”,打开“SciTE.exe”。
开始编写一个脚本,作用是选择一个用于上传的文件。
根据需求,在写脚本时,有很多的方法供我们选择,但是现在我们将重点讨论以下方法,因为这些方法是编写文件上传脚本所需的:
根据需求,在写脚本时,有很多的方法供我们选择,但是现在我们将重点讨论以下方法,因为这些方法是编写文件上传脚本所需的:
- ControlFocus(" title "," text ",controlID ) //将输入焦点集中到一个窗口的给定控件上
- ControlSetText(" title "," text ",controlID ," 待上传的文件 " )//设置控件的文本
-
ControlClick(" title "," text ",controlID ) //发送鼠标单击命令到给定控件
在AutoIT编辑器中,我们选择了“control focus”方法。在上面的步骤3中,元素识别器已经打开并最小化,而且元素已经确定了。现在我们打开元素识别器,并最大化显示。
现在,我们将通过元素识别器获取上面三种方法的参数值,从“File name”文本框获取'ControlFocus' 和 'ControlSetText' 方法的参数,从“open”按钮获取“ControlClick”方法的参数值。
现在,我们将通过元素识别器获取上面三种方法的参数值,从“File name”文本框获取'ControlFocus' 和 'ControlSetText' 方法的参数,从“open”按钮获取“ControlClick”方法的参数值。
ControlFocus方法参数值:
此方法将焦点集中到文件上传器窗口的“File name”文本框。- 第一个参数标题为“open”。
- 我们忽略第二个参数,这个地方不需要。
- 第三个参数控制是class ='Edit '和Instance ='1 '的组合。就是“Edit1”。
ControlSetText方法参数值:
这个方法用于定义我们需要在“File name”文本框中上传的文件的路径。换句话说,我们可以说这个方法设置输入的文本为输入元素。
- 第一个参数标题为“open”。
- 忽略第二个参数,此处不需要。
- 第三个参数控制是class ='Edit '和Instance ='1 '的组合。就是“Edit1”。
-
第四个参数new text,我们输入需要上传的文件路径。
ControlSetText("Open","","Edit1","E:\Resume\resume.doc") // This method input file path of a control.
在执行上述步骤之后,不要关闭窗口(编辑器和元素识别器),保持打开状态。您需要再次打开file uploader窗口,以发现“open”按钮的属性,如下面的第5步所示。
先前的值(就是“File name”文本框的属性值)会被“open”按钮的属性值覆盖。可以看到class属性现在被更改为“button”,以前是“edit”。
我们可以获得如下图所以的属性值,其中title='Open', class='Button' and instance='1'。这些值用于编写Autoit脚本,如下所示。
ControlClick方法的参数值:
1、第一个参数标题为“open”。
2、忽略第二个参数,此处不需要。
3、第三个参数是class ='Button'和Instance ='1 '的组合。就是“Button1”。
ControlClick("Open","","Button1") //This method click on 'Open' button of file uploader.
下面可以看到,处理文件上传程序的AutoIT脚本已经完成。现在可以关闭元素识别器并将脚本以“FileUpload”的名字保存在给定位置(E:/ AutoIT)。
现在不能直接执行这个脚本,首先需要编译这个脚本。对于编译这个脚本,你有两个选项 " compile script x64 " and " compile script x86 ",如果你是32位的机器就选择 " compile script x86 ",64位机器就选择" compile script x64 "。
如下图所示,编译后生成文件“FileUpload exe”。现在就可以在selenium webdriver程序中使用这个文件。
现在我们将在Selenium webdriver中使用这个AutoIT脚本。检查后面的输出。
在selenium中通过AutoIt上传文件
在Selenium脚本中,我们找到表单的元素,并将相应的数据填充到所需的地方。通过执行从AutoIT脚本生成的AutoIT exe文件来上传“resume.doc”文件,然后在selenium脚本中提交表单。
-
打开Eclipse并开始编写代码。
- 当selenium
点击选择文件按钮时,文件上传框打开。
- 然后我们需要调用AutoIT脚本,此时控制权立即传给AutoIT,以便上传文件,最后控制权又交给selenium,过程如下所示。
-
在eclipse中开发selenium脚本。
- Runtime类允许脚本与脚本正在运行的环境进行交互。
-
getRuntime()获得当前运行程序的运行环境。
-
exec()方法执行AutoIT脚本(FileUpload.exe )。
上面这句代码将会在selenium中调用AutoIt脚本,并上传文件。Runtime.getRuntime().exec("E:\\AutoIT\\FileUpload.exe");
-
在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://demo.guru99.com/selenium/autoit.html"); driver.findElement(By.id("postjob")).click(); driver.findElement(By.id("input_3")).sendKeys("Gaurav"); driver.findElement(By.id("id_4")).sendKeys("aaa@qq.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(); } }
-
验证“resume.doc”文件上传成功,感谢信息将会显示。
总结:
-
下载并安装元素识别器和AutoIT Editor。
- 打开用于操作的站点。
- 元素识别器识别文件上传器窗口的元素。
- 在元素识别器的帮助下,在编辑器中编写AutoIT脚本。
- 在selenium
webdriver脚本中使用Autoit脚本。
- 执行selenium脚本。
- 输出:文件上传成功。
本文由Gaurav Nigam提供
写在后记:初写博客,这个格式问题真是让人头疼。。。