selenium解决上传文件问题之总结

写博客是用来总结学习知识和成果的,本文为博主原创文章,未经博主允许不得转载,谢谢

一、上传文件框是input形式

  • 首先定位上传按钮
  • 发送要上传的文件
driver.findElement(By.id("XX")).sendKeys("D:\\20.jpg");

二、上传文件框不是input形式

  • 当上传文件框不是input时,需要借助AutoIT这个工具
  • 下载地址:https://www.autoitscript.com/site/autoit/downloads/
  • 注意一下,安装过程中32位还是64位,安装后,在开始菜单中会显示这些:
    这里写图片描述
    常用的三个组件:
  • AutoIT Window Info(x64) :用来定位
  • SciTE Script Editor :用来写脚本
  • Compile Script to .exe(x64):用来转换成exe

版本控制:selenium 3.5.0,firefox 20.0.1,火狐驱动:0.19.1

下面开始定位上传框:

  1. 将Finder Tool拖拽到文件名处,如图:
    这里写图片描述
  2. 记录一下如下内容:
    Title=打开,ClassnameNN=Edit1,Class=#32770

注:每个浏览器打开的上传框的title不一样,需注意。
3. 再次定位打开按钮:
这里写图片描述

  1. 记录如下内容:
    ClassnameNN=Button1
  2. 打开SciTE Script Editor 开始写脚本:
;ControlFocus("title" ,"text",controlID)定位到打开窗口
ControlFocus("打开","","Edit1")
;等待元素出现,时间为20s
WinWait("[CLASS:#32770]","",20)
;设置上传的文件
ControlSetText("打开","","Edit1","C:\Users\YBB\Desktop\1.png")
;点击上传按钮
ControlClick("打开","","Button1");

测试是否成功的方法:

  • 在浏览器中测试:
    点击上传文件按钮后,弹出选择文件框,运行脚本时,要保证此窗口打开状态,在SciTE Script Editor中点击Tools的GO,即可运行成功。如图:
    这里写图片描述

  • 在cmd中测试:
    首先要将SciTE Script Editor中编写的脚本转换成exe文件,就需要用到Compile Script to .exe(x64),打开后如图:
    这里写图片描述
    打开cmd,输入如下图, 双引号不要省略:
    这里写图片描述
    把脚本代码放进eclipse中,先定位上传文件按钮,

第一种写法:
driver.findElement(By.xpath("XXXX")).click();
String[] str = {"C:\\Users\\YBB\\Desktop\\upload.exe"};
try{
   Runtime.getRuntime().exec(str);
}catch(IOException e){
   e.printStackTrace();
}
第二种写法比较简便:
driver.findElement(By.xpath("XXXX")).click();
Runtime.getRuntime().exec("C:\\Users\\YBB\\Desktop\\upload.exe");

执行之后,上传成功!

如果遇到upload.exe不好用,重新保存一次就好了。

猜你喜欢

转载自blog.csdn.net/qq_36800800/article/details/82189143
今日推荐