selenium中怎么使用autoit
写在前面:此文为转载文章,侵删。原文链接: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编辑器上编辑脚本
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”。
开始编写一个脚本,作用是选择一个用于上传的文件。
根据需求,在写脚本时,有很多的方法供我们选择,但是现在我们将重点讨论以下方法,因为这些方法是编写文件上传脚本所需的:
- ControlFocus(" title "," text ",controlID ) //将输入焦点集中到一个窗口的给定控件上
- ControlSetText(" title "," text ",controlID ," 待上传的文件 " )//设置控件的文本
- ControlClick(" title "," text ",controlID ) //发送鼠标单击命令到给定控件
您可以看到如下面的屏幕显示的一些方法。AutoIT的优点是它有点像Eclipse,它会自动提示一些方法。
在AutoIT编辑器中,我们选择了“control focus”方法。在上面的步骤3中,元素识别器已经打开并最小化,而且元素已经确定了。现在我们打开元素识别器,并最大化显示。现在,我们将通过元素识别器获取上面三种方法的参数值,从“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步所示。
- 现在将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”。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上传文件
- 打开Eclipse并开始编写代码。
- 当selenium 点击选择文件按钮时,文件上传框打开。
- 然后我们需要调用AutoIT脚本,此时控制权立即传给AutoIT,以便上传文件,最后控制权又交给selenium,过程如下所示。
- 在eclipse中开发selenium脚本。
- Runtime类允许脚本与脚本正在运行的环境进行交互。
- getRuntime()获得当前运行程序的运行环境。
- exec()方法执行AutoIT脚本(FileUpload.exe )。
Runtime.getRuntime().exec("E:\\AutoIT\\FileUpload.exe");
上面这句代码将会在selenium中调用AutoIt脚本,并上传文件。
- 在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("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();} }
- 验证“resume.doc”文件上传成功,感谢信息将会显示。
总结:
- 下载并安装元素识别器和AutoIT Editor。
- 打开用于操作的站点。
- 元素识别器识别文件上传器窗口的元素。
- 在元素识别器的帮助下,在编辑器中编写AutoIT脚本。
- 在selenium webdriver脚本中使用Autoit脚本。
- 执行selenium脚本。
- 输出:文件上传成功。
写在后记:初写博客,这个格式问题真是让人头疼。。。
selenium中怎么使用autoit相关推荐
- python executescript_在selenium中一些相对常用的JavaScript事件
输入框输入: 1.找到输入框的id,然后进行输入操作 ordinal :输入框的id parameter :需要输入的内容 browser.execute_script("document. ...
- selenium查找文本_在Selenium中查找具有链接文本和部分链接文本的元素
selenium查找文本 Selenium中CSS定位器是一个基本概念,每个旨在使用Selenium执行自动化测试的测试人员都应该意识到这一点. 在Selenium中充分使用CSS定位器可以帮助您以更 ...
- 在Selenium中按TagName定位元素
Selenium定位器是处理网页上的元素时的关键. 从ID,名称,类,标记名,XPath,CSS选择器等定位器列表中,可以根据需要选择其中任何一种,然后在网页上找到Web元素. 由于与tagName或 ...
- Selenium Java教程– Selenium中的类名定位器
Selenium中CSS Locator是编写脚本的最重要方面之一. 如果您无法通过使用Selenium中的任何CSS定位器来定位元素,那么精通Selenium自动化将是一项艰巨的任务. 硒提供多种定 ...
- chrome webdriver_(最新版)如何正确移除Selenium中的 window.navigator.webdriver
摄影:产品经理产品经理的三文鱼炒饭 在<一日一技:如何正确移除Selenium中window.navigator.webdriver的值>一文中,我们介绍了在当时能够正确从Selenium ...
- 教你轻松截获 Selenium 中的 Ajax 数据
之前我们介绍了 ajax-hook 来实现爬虫的过程中截获 Ajax 请求,可以看这篇文章如何用 Hook 实时处理和保存 Ajax 数据,在这里再另外介绍一个工具 BrowserMob Proxy, ...
- selenium中录制拖拽动作
今天工作中遇到了selenium中录制拖拽动作需求:在同一个页面上,将一个table中的元素拖拽到另外一个table中. 通过查看帮助文档是使用dragAndDrop或类似的命令.根据使用方法drag ...
- selenium中js定位_Selenium中的定位剂
selenium中js定位 1.什么是Selenium定位器? (1. What is a Selenium Locator?) Selenium Locators are used for iden ...
- selenium中的三种等待方法
在selenium中,当我们定位的元素由于网络原因还没加载出来,浏览器找不到我们要定位的元素就会报错.等待方式的设置是保证脚本稳定有效运行的一个非常重要的手段,常用的等待方法有: sleep() -- ...
- selenium中键盘操作
前言 在web测试中,可能会遇到一些需要键盘操作.在selenium中,提供了一个Keys类,来处理键盘操作.Keys类中,几乎提供了所有的键盘快捷键组合操作. DEMO 举个例子,在百度首页,输入内 ...
最新文章
- Hibernate中基本概念
- Chapter3_操作符_方法调用中的别名问题
- stm32cubemx中文_用 STM32 通用定时器做微秒延时函数(STM32CubeMX版本)
- 【ArcGIS遇上Python】三种利用Python批量处理地理数据的方法——以栅格数据投影转换为例
- ArchSummit分享 | 高德地图App架构演化与实践
- PAT乙级(1036 跟奥巴马一起编程)
- ls –l total 0_W3 Total Cache与WP Super Cache –打包中的哪一个领先?
- 获取验证码 60秒后重新获取
- 23种Python设计模式之工厂方法模式详解
- 设计配色的基本知识以及原理
- JAVA跑步计时器app_锻炼计时器app
- 创建带有实时在线数据备份的指纹考勤系统
- Latex 1: 解决latex中遇到一个常见错误:Improper alphabetic constant.
- 日本研发创可贴式的皮肤传感器
- JavaWeb自学笔记
- PEM文件格式详细解析
- Visual Paradigm在 Windows系统电脑上安装
- OPC UA客户端工具Softing OPC Client使用_推荐使用
- oracle rfs进程过多,Oracle物理备库RFS进程消失,不能启动--解决
- 互联网人没有想多——互联网人能当中国的新中产的机遇和挑战
热门文章
- 计算机网络实验(Wireshark 抓包工具使用、WinPcap 编程、协议分析流量统计程序的编写)
- web前端页面优化详解
- 短除法求解最大公约数c语言,[编程入门]最大公约数与最小公倍数-题解(C语言代码)(短除法)...
- 猿如意|IntelliJ IDEA Community下载安装以及基础开发设置和快捷键设置的详细教程
- Vulkan教程 - 08 着色器及编译SPIR-V
- (二)大话深度学习编译器中的自动调优·DSL与IR
- C#自制简易弹钢琴谱
- arcgis android离线地图,Arcgis Android API开发之离线地图
- Eclipse中文版的,怎么变成英文版
- 成都Uber优步司机奖励政策(3月10日)