zoukankan      html  css  js  c++  java
  • 【java+selenium3】自动化处理文件上传 (十三)

    一、文件上传

      文件上传是自动化中棘手的部分,目前selenium并没有提供上传的实现api,所以知道借助外力来完成,如AutoIt、sikuli。

      AutoIt , 这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)的自动化操作,利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务;

      AutoIt下载链接:https://www.autoitscript.com/site/autoit/downloads/ 或者点击下列图标进行下载!

           

    1.下载后双击进行安装:autoit-v3-setup.exe 

       安装完成如下展示:

      

    2.上传脚本的编写

     (1) 打开AutoIt Windows Info 工具,鼠标移动到Finder Tool,按住鼠标左键拖动到需要识别的windows控件上;

    (2) 打开编辑器,根据控件Finder Tool识别到的信息来调用函数编写脚本;

    ;ControlFocus(("title","text",controllD)用于识别windows文件上传窗口
    ControlFocus("打开","","")
    ;向文件名输入框输入本地要上传文件的路径
    ControlSetText("打开","","Edit1","C:UsersAdministratorDesktop	est图片aidu.png")
    Sleep(2000)
    ;点击上传窗口中的“打开“按钮
    ControlClick("打开","","Button1")

    3.保存脚本文件为ChromFileUpload.au3格式

    4.tools=>go,执行脚本验证(前提是windows窗口必须是打开状态)

       脚本执行结束后:

    5.为了这个脚本能被java 程序调用,需要通过Compile Script to .exe (x64)工具生成exe文件

    提示Conversion complete转化完成:将ChromeFileUpload.exe拷贝到项目下

    6.java代码执行exe文件

    //实现文件上传。通过Runtime的静态方法获取Runtime对象
    Runtime runtime = Runtime.getRuntime();
    //通过Runtime对象调用exe方法
    runtime.exec("src/test/resources/ChromeFileUpload.exe");

    7.实现文件上传整体代码如下:

    package cn.test;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    
    public class FileUpload {
    
        public static void main(String[] args) {
            System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
            WebDriver driver =new ChromeDriver();
            try {
                driver.get("file:///C:/Users/Administrator/Desktop/test/file_up_load.html");
                driver.manage().window().maximize();
                driver.findElement(By.id("fileUpload")).click();
                Thread.sleep(3000);
                //实现文件上传。通过Runtime的静态方法获取Runtime对象
                Runtime runtime = Runtime.getRuntime();
                //通过Runtime对象调用exe方法
                runtime.exec("src/test/resources/ChromeFileUpload.exe");
                Thread.sleep(5000);
        }catch (Exception e) {
            e.printStackTrace();
        }finally {
            System.out.println("执行结束,关闭浏览器");
            driver.quit();
        }
        }
    }

    学习后总结,不足之处,后续修改,未完待续。。。

  • 相关阅读:
    【简●解】[AHOI2009]中国象棋
    【讲●解】KMP算法
    【简●解】POJ 1185,LG P2704【炮兵阵地】
    学习网站整理
    【讲●解】火车进出栈类问题 & 卡特兰数应用
    洛谷4556 [Vani有约会]雨天的尾巴
    BZOJ2212或洛谷3521 [POI2011]ROT-Tree Rotations
    洛谷1119 灾后重建
    洛谷1462(重题1951) 通往奥格瑞玛的道路(收费站_NOI导刊2009提高(2))
    BZOJ2721或洛谷1445 [Violet]樱花
  • 原文地址:https://www.cnblogs.com/xiaozhaoboke/p/11138548.html
Copyright © 2011-2022 走看看