参考:https://blog.csdn.net/u011541946/article/details/74359517
参考:https://blog.csdn.net/linxi9322/article/details/78789452
关于文件上传,这边介绍一个第三方工具,叫AutoIt,简单来说,这个是一个能支持桌面GUI自动化的工具,它支持脚本语言编写。这里,我们用AutoIt来做文件上传的演示。在Selenium脚本中如果需要AutoIt来协助这个文件上传功能,大概步骤是这样的:
1. Selenium点击web产品上的文件上传按钮,弹窗上传框。
2.执行AutoIt实现准备好的脚本文件,这个脚本文件写了关于上传什么文件的一个.exe文件。
所以,我们先来介绍如何下载和安装AutoIt。
1)打开AutoIt的官网下载地址
https://www.autoitscript.com/site/autoit/downloads/
2)点击下载zip
两种下载方法都可以,这里我想下载的是zip,解压出来如下图.
3)点击SciTe文件夹,我们打开脚本编辑器。
4)打开百度图片上传窗口,同时打开AutoIt 脚本编辑器和元素定位器。
拖动元素定位器上那个靶点形状按钮到文件上传弹窗,能够捕获到一些元素信息。
5)在AutoIt脚本编辑器里输入如下脚本,不要下面我写的备注哈。
ControlFocus("文件上传","","Edit1") ControlSetText("文件上传","","Edit1","C:\Users\del\Desktop\123.gif") ControlClick("文件上传","","Button1")
6)编译成一个.exe文件
先保存到本地,例如默认路径保存,名称为UploadFile.au3,
然后在AutoIt脚本编辑器中点击Tools菜单,选择compile,会在同路径下生成一个UploadFile.exe的文件,
我们把这个文件拷贝到桌面,待会在Selenium脚本要使用。
7)Selenium脚本执行123.exe文件,观察文件是否上传。
package rjcs; import java.io.File; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.awt.image.BufferedImage; import org.apache.commons.io.FileUtils; import org.openqa.selenium.By; import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.firefox.FirefoxDriver; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import javax.imageio.ImageIO; public class zmjsj { public static void main(String[] args) { System.setProperty("webdriver.firefox.bin","C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); //设置火狐的安装路径,防止系统找不到 FirefoxDriver driver = new FirefoxDriver(); //初始化FireFox浏览器实例,并打开浏览器 try { driver.manage().window().maximize(); //最大化窗口 Thread.sleep(3000); driver.manage().window().maximize(); //最大化窗口 Thread.sleep(3000); driver.get("https://www.baidu.com/"); Thread.sleep(3000); driver.findElement(By.xpath("//*/span[@class='soutu-btn']")).click(); // 点击照相机这个按钮 Thread.sleep(8000); driver.findElement(By.xpath("//*/input[@class='upload-pic']")).click(); // 点击本地上传图片 Thread.sleep(8000); Runtime.getRuntime().exec("C:\\Users\\del\\Desktop\\123.exe");// 执行桌面的AutoIt封装的脚本 Thread.sleep(10000); }catch (Exception e) { e.printStackTrace(); }finally { driver.quit(); } } }