zoukankan      html  css  js  c++  java
  • selenium自动化实施中对windows弹出框的几种常见处理方案

    一.概述

        在使用自动化框架selenium实施中,经常会遇到windows弹出框的出现,刚入门的web自动化测试小伙伴不要慌哦!

    二.几种常见的处理windows弹出框的方案

    2.1 Selenium 处理安全对话框 (windows security dialog)用autoit 来代替

    2.1.1 安装autoit-v3-setup.exe

    2.1.2 将AutoitX3.dll和jcob.1.18-M2-x86.dll放到C:windowsSystem32路径下;如果是64位系统,需把AutoitX3_63.dll和jcob.1.18-M2-x64.dll分别放到C:windowsSystem32和C:windowsSyswow64路径下

    2.1.3 注册AutoitX3.dll:dos窗口中输入regsvr32 autoitX3.dll并按回车;如果是64位系统注册AutoitX3_64.dll:dos窗口中输入regsvr32 autoitX3_64.dll并按回车

    2.1.4 在项目中需要引入jar包:AutoItX4Java.jar和jacob.jar

    2.1.5 实例代码如下

     1 /***
     2      * 
     3      * @param title window框的标题(用安装好的autoit64.exe可以识别wind弹窗口的标题)
     4      * @param userName  用户名
     5      * @param pwd       密码
     6      */
     7     public void autoitHandleWin(String title,String userName,String pwd){
     8         AutoItX x=new AutoItX();
     9         if(x.winWaitActive(title,"",20)){
    10             if(x.winExists(title)){
    11                 x.sleep(500);
    12                 x.ControlSetText(title,"",Edit1,userName);
    13                 x.ControlSetText(title,"",Edit1,pwd);
    14                 x.ControlClick(title,"",Button);
    15             }
    16         }
    17     }
    View Code

    2.2 JAVA程序实现自动测试,自动演示功能,或者是其它的一些鼠标和键盘控制的应用。出于这样的目的,自从JDK1.3开始,它就为我们提供了一个用来产生本机输入事件的机器人类--java.awt.Robot;钮

    2.2.1 比如我们可以用Robot类模拟键盘发送快捷键的方式来操作IE11的下载框的保存按,实例代码如下:

     1 public void robotHandleWin(){
     2         try {
     3             Robot robot=new Robot();
     4             robot.keyPress(KeyEvent.VK_ALT);
     5             robot.keyPress(KeyEvent.VK_S);
     6             robot.delay(500);
     7             robot.keyRelease(KeyEvent.VK_S);
     8             robot.keyRelease(KeyEvent.VK_ALT);
     9         } catch (AWTException e) {
    10             // TODO Auto-generated catch block
    11             e.printStackTrace();
    12         }
    13     }
    View Code

    2.3 根据截图来操作

    2.3.1 安装sikuli-x-1.0rc3(r905)-win32.exe

    2.3.2 配置环境变量

    下面来做一个自动化的小例子。(官方的第一个小例子为开始运行里输入hello world )这里为打开360极速浏览器(默认为百度首页),搜索框里输入sikuli ,然后点击“百度一下”按钮搜索。

     第一步、点击桌面360极速浏览器图标。

     方法一,输入双击函数doubleClick(),然后通过截图工具对桌面图标截图,输入。

    方法二很快捷,点击窗口左侧双击函数doubleClick(),直接进入截图状态。截图完成后直接添加函数到脚本编辑区域。

      

     第二步,我们依然用第二种快捷的方式,点击左侧type(图标,text) 函数,这次截取的对象为百度首页的输入框。

      

     因为,默认定位的焦点为图片的中心,我们要输入的位置在输入框的左侧,所以需要对焦点进行调整。直拉点击截图的输入框图片。

     

     

      当然,在这个窗口中,我们也可调整图片的匹配度,匹配度越低容错能力越强。这里来简单解释一下:

      大家知道ie7 与 ie8 的图标虽然相似,但还是有所差别的。为了使脚本的移植性更强。比如本机是用IE7 录制的脚本,移植到另一台电脑上只有IE 8 ,因为精确度调低,脚本也会把IE8 当IE 7 来执行。当然有些情况下调低并不好,比如桌面上有两个图标非常相识,那么精确度调整的很低,那么脚本就无法辨认谁是谁了。

     

    第三步、这一步与第一步一样,不过这里要使用的函数是单击函数click() ,点击“百度一下”按钮。

     下面完整脚本:

     

       运行一下吧这个小脚本吧!成就感就此而生,这是你对这种技术产生兴趣的动力。。

    2.3.3 根据截的图片来点击页面对象,代码实例如下

     1 public void sikuliHandleWin(String pngPath,String envetName){
     2         Screen screen=new Screen();
     3         Pattern image=new Pattern(pngPath);
     4         if(envetName.equalsIgnoreCase("click")){
     5             try {
     6                 if(screen.exists(image)!=null){
     7                     screen.click(image);
     8                 }
     9             } catch (Exception e) {
    10                 // TODO: handle exception
    11             }
    12         }
    13     }
    View Code

    ---------------------------------技术改变生活!,QQ:770544029

  • 相关阅读:
    objc之method&class attributes
    iOS之Export UIAutomation script
    js's forin vs oc's forin
    iOS新加速计事件
    Mac之Font管理
    iOS之VoiceOver
    OC之initialize
    C++常见问题
    objc新老runtime接口类型对比
    dlopen之mode参数详解
  • 原文地址:https://www.cnblogs.com/liwu/p/5596024.html
Copyright © 2011-2022 走看看