Selenium2(java)selenium常用API 五
上传文件
元素标签是input时上传方式
上传是一个input,对于这种元素是input
的标签可以采用元素的sendKeys()方法来直接赋值,upload.html代码:
<html> <head></head> <body> <input type="file" id="fileControl" value="选择文件"> </body> <style type="text/css" id="1"></style> </html>
具体代码:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class Upload1 { public static void main(String[] args) { WebDriver driver = new FirefoxDriver(); //打开上传的网页 - get中输入upload的地址 driver.get("D:\\Work\\eclipse_workspace\\seleniumdemo\\res\\upload.html"); WebElement e1 = driver.findElement(By.id("fileControl")); //输入要上传文件的地址 e1.sendKeys("D:\\Work\\eclipse_workspace\\seleniumdemo\\res\\被上传的文件.txt"); try { //等待2秒观察显示 Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } driver.quit(); } }
使用autoit脚本上传方式
它是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。
autoit安装包地址链接: http://pan.baidu.com/s/1dDL5Qhz 密码: yew5
二进制文件安装即可,打开autoit,主界面如下:
具体使用:
拖动Finder Tool到要定位到的弹窗上
获取到文件名输入框的classname
获取到打开按钮的classname
根据获取到的值编写autoit的脚本:
;fisrt make sure the number of arguments passed into the script is more than 1 If $CmdLine[0]<2 Then Exit ElseIf; 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;代表chrome浏览器 $title="选择要加载的文件" ElseIf $browser = "chrome" Then; $title="打开" ElseIf $browser="firefox" Then $title="文件上传" EndIf If WinWait($title,"",4) Then;等待弹窗出现,最大等待时间是4s WinActivate($title);找到弹窗之后,激活当前窗口 ControlSetText($title,"","Edit",$uploadfie);把文件路径放入输入框 ControlClick($title,"","Button");点击保存或者打开或者上传按钮 Else Return False EndIf EndFunc
文件保存为upload.au3,将文件转换成exe可执行文件
安装目录下的C:\Program Files (x86)\AutoIt3\Aut2Exe\Aut2exe_x64.exe
生成文件upload.exe
打开cmd,输入:"C:\Users\Administrator\Desktop\upload.exe" "firefox" "C:\Users\Administrator\Desktop\image.jpg" 双引号不要省略
在selenium中调用脚本,封装成一个执行这个exe文件的方法:
/** *上传文件,需要点击弹出上传的窗口 * *@param browser *使用的浏览器名称 *@param file *需要上传的文件及文件名 */ public void handleupload(String browser, File file) { String filepath = file.getAbsolutePath(); String executeFile = "C:\Users\Administrator\Desktop\upload.exe";//定义了upload.exe文件的路径 String cmd = "\"" + executeFile + "\"" + " " + "\"" + browsser + "\"" + " " + "\"" + filePath + "\""; try { Process p = Runtime.getRuntime().exec(cmd); p.waitFor(); } catch(Exception e) { e.printStackTrace(); } }
具体步骤是:先去用selenium点击上传文件按钮,之后会弹出上传文件输入框,最后执行上面那个public void handleUpload(String browser, File file)方法即可。