selenium处理文件上传大致会有两种情况,一种是文件上传使用的是input元素,即<input type="file">
,那么直接对这个input元素使用sendkeys方法输入文件的路径就可以完成上传,另一种是调用windows完成文件上传,即文件上传会弹出windows弹窗,此时则需要借助Autoit这样一个小工具结合selenium完成。
1、文件上传使用的是input元素,selenium+java代码示例参考如下:
public class UploadFile {
public static void main(String[] args) throws Exception {
System.setProperty("webdriver.chrome.driver", "D:\\webdrivers\\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://www.baidu.com");
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.findElement(By.xpath("//span[@class='soutu-btn']")).click();
//上传按钮为input标签,定位上传按钮
WebElement input=driver.findElement(By.xpath("//input[@class='upload-pic']"));
Thread.sleep(2000);
//输入文件路径,上传文件
input.sendKeys("D:\\AutoItScript\\timg.jpg");
Thread.sleep(3000);
//退出浏览器
driver.quit();
}
}
2、文件上传使用windows,需借助Autoit;具体操作步骤如下。
第一步,安装Autoit,下载后,默认安装即可;
第二步,Autoit脚本编写,Autioit脚本执行的内容主要从打开上传按钮后开始
(1)使用Autoit windows info组件识别windows窗口中的元素
按住Finder Tool按钮后拖动到指定位置识别元素,显示元素的各种属性
(2)使用SciTE Script Editor组件编写文件上传脚本
脚本解释如下:
ControlFocus("打开","","Edit1");
表示将当前的焦点聚焦到打开的弹窗上
ControlSetText("打开","","Edit1","D:\AutoItScript\timg.jpg");
表示选中需要上传的文件
ControlClick("打开","","Button1");
表示点击弹窗中的打开按钮
(3)保存编写脚本,将编写的脚本转化为exe格式;选中编写的脚本,点击鼠标右键选择Compile Script点击确定。
第三步,selenium与Autoit脚本结合,实现文件上传。
(1)使用selenium点击文件上传按钮。
(2)使用Java中的Runtime类引入Autoit脚本。
例如编写完成的Autoit脚本存放在D盘AutoItScript目录下,则引入方式为:Runtime.getRuntime().exec(“D:\AutoItScript\upload.exe”)
(3)完成后续操作。
Autoit+selenium+java完成文件上传代码示例参考如下:
public class Autoit_upload {
public static void main(String[] args) throws IOException, Exception {
//使用Autoit实现文件上传//
System.setProperty("webdriver.chrome.driver", "D:\\webdrivers\\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://www.baidu.com");
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.findElement(By.xpath("//span[@class='soutu-btn']")).click();
//点击上传按钮
driver.findElement(By.xpath("//input[@class='upload-pic']"));
Thread.sleep(2000);
//运行Autoit脚本,执行上传
Runtime.getRuntime().exec("D:\\AutoItScript\\uploadFile.exe");
Thread.sleep(2000);
//退出浏览器
driver.quit();
}
}