如何使用AutoIt和Selenium阻止Windows弹出窗口?

发表于:2017-4-10 09:16

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:softwaretesting    来源:51Testing软件测试网原创

  当我们全神贯注做某件很重要事情时,电脑页面上突然弹出窗口,这会使人感到非常的恼怒。所以处理这些让人烦心的弹出窗口及显得很有必要了。
  在这篇文章中我们将了解到如何使用AutoIt和Selenium自动化测试阻止Windows弹出窗口。其中包括:
  1、如何在Selenium WebDriver中处理windows弹出窗口
  2、通过把控件从Selenium WebDriver传输到AutoIt来上传或下载文件和图像
  如何从程序中调用AutoIt脚本
  但首先,我们需要来了解AutoIt是什么,如何安装和使用它。
  什么是AutoIt?
  AutoIt V3是一款免费软件工具,可用于在任何Windows环境中执行任何自动化操作。Autolt脚本由BASIC语言编写。它可以模拟击键,鼠标移动和窗口/控制操作的任何组合行为。
  通过AutoIt,我们可以为我们的日常操作(如文件输入/输出操作,应用程序处理,资源监控和管理任务等)准备脚本。但是在本文中,我们只讨论在Selenium WebDriver中如何处理弹出窗口。
  在通过Selenium进行自动化或使用其他工具进行自动化时,我们经常会遇到Windows弹出窗口。由于Selenium仅限于自动化浏览器使用,所以桌面窗口超出了范围。Web应用程序有时需要与桌面一起执行文件的下载和上传。有使这些工作流程自动化的工具,如AutoIt,Robot Framework,Silk Test等。
  我们可以通过将我们的控件从Selenium WebDriver传输到AutoIt 来上传或下载文件或图像。所以我们需要从程序中显式调用AutoIt脚本。
  AutoIt下载和安装--分布指南
  一旦下载,请在系统上安装AutoItV3设置,按照以下步骤进行安装。
  步骤#1-点击安装文件
  步骤#2-接受许可协议
  步骤#3-根据操作系统选择64位或32位选项,在这里选择的是64位
  步骤#4-单击下一步,然后通过双击选择要执行的操作:这里选择是运行脚本
  步骤#5-选择所需组件,然后单击下一步。也可以选择所有选中的默认值
  步骤#6-选择文件安装位置,然后单击安装。安装需要几秒钟。完成后,安装脚本编辑器
  AutoIt脚本编辑器 - 安装
  它是一个帮助查找命令的编辑器。
  如何编写AutoIt脚本:
  · 通过AutoItV3 Windows信息工具识别Windows控件,64位或32位,具体取决于您的操作系统
  · 点击Finder工具,鼠标悬停在想要的属性对象上
  · 它将捕获弹出窗口的属性,如标题,类,位置,大小,样式,句柄等
  AutoIt V3窗口信息查找工具
  · 然后借助上述捕获的属性,在SciTE脚本编辑器或记事本中编写脚本,并使用.au3扩展名保存脚本
  · 现在使用AutoIt脚本将.au3脚本编译为EXE转换器,将.au3文件转换为.exe文件
  · 在该编辑器中提供源和目标文件夹位置,然后单击转换按钮,它将创建一个.exe文件
  AutoIt脚本到Exe转换器:
  · 或者右键单击保存.au3脚本,它将显示编译选项。选择编译到64位或编译到32位选项,并将在同一文件夹中创建.exe文件。
  · 遇到Selenium测试用例中的下载或上传弹出窗口,执行.exe文件
  · 在脚本中调用.exe文件的语法是:Runtime.getRuntime().exec("path of exe file");
  下载弹出示例:
  如何下载文件?
  可以使用以下AutoIt脚本来处理下载弹出窗口:
  我们已经在前面的步骤中获得文件下载弹出属性,如Tile,Class,Position和Size等等。现在使用标识的Windows控件构建一个AutoIt脚本:
1  WinWait("[TITLE:Opening ; CLASS:MozillaDialogClass]","", 10)  //Explanation - "It will wait for the title - opening , type- mozilladialogclass, for 10 secs
2  If WinExists("[TITLE:Opening ; CLASS:MozillaDialogClass]") Then  // if condition
3  WinActivate("[TITLE:Opening ; CLASS:MozillaDialogClass]")  // if that title is found it will activate and perform below actions
4  Send("{DOWN}")  // perform down arrow operation
5  Sleep(10)   // wait for 10 secs
6  Send("{TAB}")  // perform tab operation
7  Sleep(10) // wait for 10 secs
8  Send("{TAB}") // perform tab operation
9  Sleep(10)  // wait for 10 secs
10 Send("{ENTER}")  // press enter button
11 EndIf  // end of if condition
  上传弹出示例;
  如何上传文件?
  您可以使用以下AutoIt脚本来处理上传窗口弹出窗口,使用标识的Windows控件构建AutoIt脚本:
1  WinWaitActive("File Upload") // enter the title of the pop up
2  Send("Path of the file to enter")   // enter the path of the file to upload
3  Send("{ENTER}") / press enter
  保存并编译此脚本,并在需要上传文件的selenium脚本中执行该.exe文件
  登陆弹出窗口示例
  如何输入用户名和密码到上述登录弹出窗口?
  可以使用以下AutoIt脚本来处理登录弹出窗口:
1  WinWaitActive("Authentication Required","","10")
2  If WinExists("Authentication Required") Then
3  Send("username{TAB}")
4  Send("Password{Enter}")
5  EndIf'
  如何测试AutoIt脚本是否显示为预期结果,而不是将其集成到selenium脚本中?
  按照以下步骤:
  · 在编译脚本之前,双击.au3文件 - 它将显示脚本中的错误
  · 如果没有发现错误,请将您的脚本转换为.exe文件
  · 手动生成文件下载流行情景
  · 现在弹出窗口点击.exe文件,能够接受弹出并下载文件
  AutoIT的缺点:
  · 它只适用于Windows操作系统
  · 具有基本的编码能力
  · 虽然这很有用,但是对于初学者来说却有点复杂
  AutoIt还能做什么?
  除了Windows弹出窗口之外,我们还可以使用AutoIt来自动执行文件搜索,参考下面的示例:
  在计算机中进行文件搜索脚本:
1  $search = FileFindFirstFile("*How*") // enter the search string
2  If $search = -1 Then // condition not satisfied show error message
3  MsgBox(1, "Error", "No files/directories matched the search pattern")
4  Exit
5  EndIf
6  While 1
7  $file = FileFindNextFile($search)
8  If @error Then ExitLoop
9  MsgBox(4096, "File:", $file)
10 WEnd
11 FileClose($search)
  编译并保存此脚本,在当前工作目录中执行该.exe文件。它将搜索以"How"开头的所有文件,并显示一个消息框。
  使用时应该注意的一点:
  · 不要忘记用.au3扩展名保存脚本
  · 编译脚本并创建一个.exe可执行文件
  · 弹出窗口或任何您想要处理的内容应该事先存在,以便.exe文件可以正常工作
版权声明:51Testing软件测试网(www.51testing.com)原创出品,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号