selenium java 上传文件

1.input元素

driver.findElement(By.id(“ajax-upload-id-1487848173000”)).sendKeys(“D:\\test.txt”); 

sendKeys()方法传参为所上传文件所在路径。

2.非input元素,借助AutoIT3工具

AutoIT3安装成功后,打开浏览器上传文件窗口(不同浏览器窗口title不一样)

如何用AutoIT3来实现上传呢?
  1. 首先打开上传文件所在页面,点击上传,打开本地文件窗口,之后打开安装的AutoIT3文件夹下的AutoIT3_x64.exe或者开始菜单内的Auto Window Info(X64)
  2. 在打开的网页上的本地文档窗口,鼠标选中AutoIt Window Info窗口内的Finder Tool,长按到靶子浮现之后拖动到本地文档窗口“文件名”输入框内,获取文本框的信息。之后重复此动作,获取上传按钮的信息。
  3. 获取文本框和上传按钮的元素信息后,打开SciTE Script Editor,将以下代码复制粘贴到文本区域。这段代码的用意是首先判断所传参数是否大于1个,之后调用handleUpload函数,函数是先判断进行文件上传的是什么浏览器,之后,根据上一步所采集到的文本框及上传按钮元素属性,实现文件路径的打开“上传”按钮的点击,也就是上传功能的实现。保存生成后缀为.au3的文件,之后打开AutoIT3下的Compile Script To .exe,将生成的.au3文件变异为.exe的可执行文件。
;first make sure the number of arguments passed into the scripts is more than 1  
If $CmdLine[0]<2 Then Exit EndIf ;if parmas num <2 ,then break  
;$CmdLine[0] ;参数的数量  
;$CmdLine[1] ;第一个参数 (脚本名称后面)  
;$CmdLine[2] ;第二个参数  
;都是从cmd传入参数  
 handleUpload($CmdLine[1],$CmdLine[2])  
  
;定义上传函数,有两个参数,第一个是浏览器名字,第二参数是文件路径  
 Func handleUpload($browser, $uploadfile)  
     Dim $title                          ;定义一个title变量  
            ;根据弹窗的title来判断是什么浏览器  
            If $browser="ie" Then                          ; 代表IE浏览器  
                  $title="选择要加载的文件"  
            ElseIf $browser="chrome" Then               ; 代表谷歌浏览器  
                 $title="打开"  
            ElseIf    $browser="firefox" Then             ; 代表火狐浏览器  
                  $title="文件上传"  
            EndIf  
  
            if WinWait($title,"",4) Then ;等待弹出出现,最大等待时间是4秒  
                   WinActivate($title)                  ;找到弹出窗口之后,激活当前窗口  
                   ControlSetText($title,"","Edit1",$uploadfile)   ;把文件路径放入输入框,此”Edit1“是用FinderTool获取到的  
                   ControlClick($title,"","Button1")                ;点击保存或者打开或者上传按钮,此“Button1”使用FinderTool获取到的  
            Else  
            Return False  
            EndIf  
 EndFunc

窗口的title为“选择要加载的文件”,标题的Class为“#32770”。

文件名输入框的class 为“Edit”,Instance为“1” ,所以ClassnameNN为“Edit1”。

打开按钮的class 为“Button”,Instance为“1” ,所以ClassnameNN为“Button1”。

接下来该如何在Java代码中来使用我们生成的文件呢,这里要用到lang包下的Runtime类。

这是网上找的这个类的作用,其实简言之就是用这个类来实现cmd命令的效果。

public class Runtime
extends Object
每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时。应用程序不能创建自己的 Runtime 类实例。

代码如下

Runtime runtime = Runtime.getRuntime();
runtime.exec(“d:\\shangchuan\\upload.exe”+ “ ” + “firefox” + “ ” + “d:\\shangchuan\\text.txt”);

其中exec(“生成的可执行文件”+ “ ” + “浏览器” + “ ” + “要上传的文件地址”)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值