zoukankan      html  css  js  c++  java
  • selenium+java文件上传

    1.Input元素

    直接使用sendKeys()方法

    driver.findElement(By.id("attachment")).sendKeys("D:\test.txt"); 

    2. 非input元素处理方法,借助AutoIT3工具

    下载工具并安装,下载地址:https://www.autoitscript.com/

    安装步骤省略。

    步骤如下:

    (1)首先打开被测系统要上传文件的页面。

    (2)之后打开安装的AutoIT3文件夹下的AutoIT3_x64.exe。 

     

    (3)鼠标选中AutoIt Window Info窗口内的Finder Tool,长按到靶子浮现之后拖动到本地文档窗口“文件名”输入框内,获取文本框的信息。之后重复此动作,获取上传按钮的信息。

     

    (4)获取文本框和上传按钮的元素信息后,打开SciTE Script Editor,将以下代码复制粘贴到文本区域。这段代码的用意是首先判断所传参数是否大于1个,之后调用handleUpload函数,函数是先判断进行文件上传的是什么浏览器,之后,根据上一步所采集到的文本框及上传按钮元素属性,实现文件路径的打开“上传”按钮的点击,也就是上传功能的实现。保存生成后缀为.au3的文件。

     

    (5)   

     

    脚本示例如下:

    If $CmdLine[0]<2 Then Exit EndIf
     handleUpload($CmdLine[1],$CmdLine[2])

    Func handleUpload($browser,$uploadfile)
      Dim $title
        If $browser="ie" Then
          $title="选择要加载的文件"
        ElseIf $browser="chrome" Then
          $title="打开"
        ElseIf $browser="firefox" Then
          $title="文件上传"
        EndIf

        If WinWait($title,"",6) Then
          WinActivate($title)
          ;ControlFocus(("title","text",controllD)用于识别windows文件上传窗口
          ControlFocus($title,"","")
          ControlSetText($title,"","Edit1",$uploadfile)
          ControlClick($title,"","Button1")
        Else
          Return False
        EndIf
    EndFunc

    (5)   之后打开AutoIT3下的Compile Script To .exe,将生成的.au3文件变异为.exe的可执行文件。

    (6)lang包下的Runtime类实现cmd命令的效果,来使用我们生成的文件。

    //上传附件 -定义上传函数,第一个参数browser是浏览器的名字,第二个参数filePath是文件路径-推荐使用
    public static void upload(String browser,String filePath) {
      //定义了autoit.ext文件的路径
      System.out.println("====" + filePath);
      String executeFile=System.getProperty("user.dir")+"\uploadfile\autoit.exe";
      String cmd = """+ executeFile+ """+ " "+ """+ browser+ """+ " "+ """+ filePath+ """;
      System.out.println("cmd="+cmd);
      try{
        Process process= Runtime.getRuntime().exec(cmd);
        process.waitFor();
      } catch(Exception e) {
        e.printStackTrace();
      }
    }

     

  • 相关阅读:
    P5107 能量采集
    P4655 [CEOI2017]Building Bridges
    P1129 [ZJOI2007]矩阵游戏
    P5299 [PKUWC2018]Slay the Spire
    P1625求和 giao精大杂烩
    背包
    根号分治
    CF963B
    国王游戏
    P6006 USACO 3SUM G
  • 原文地址:https://www.cnblogs.com/xiule/p/12021547.html
Copyright © 2011-2022 走看看