AutoIT结合Selenium Webdriver进行文件上传
1. AutoIT 是一个免费软件,一种免费脚本语言,主要用于设计 windows GUI 自动化和一般脚本。它使用了鼠标、键盘和窗口等操作完成 selenium webdriver 不可能完成的任务,如文件上传。
2. 下载并安装 AutoIT
- 下载 'Autoit' :https://www.autoitscript.com/site/autoit/downloads/
- 下载 'Autoit Editor' :https://www.autoitscript.com/site/autoit-script-editor/downloads/
- 安装则按提示一步步进行
3. Au3Info.exe(Element Identifier)查找元素
- Au3Info.exe 路径:D:\Download\Install\AutoIt3(由自己安装路径决定)
- 打开 Au3Info.exe ,若想查找元素,将"Finder Tool" 拖动到指定元素位置即可获取该元素属性
4. SciTE.exe(AutoIT editor)编写脚本
- SciTE.exe 路径:D:\Download\Install\AutoIt3\SciTE(由自己安装路径决定)
- 打开 SciTE.exe ,由元素属性而编写文件上传脚本的方法如下:
- 保存文件,文件名为 FileUpload, 保存类型为 AutoIt(au3),保存后文件为 FileUpload.au3,此时不能直接运行该脚本,须编译(右击该脚本,如果电脑为32位选”Compile Script (x86)",电脑为64位则选“Compile Script (x64)"),本人电脑为64位,编译后文件为 FileUpload.exe,现在可以在Selenium webdriver script中使用该文件 FileUpload.exe。
5. Selinum script 调用 AutoIT script ( FileUpload.exe )
Runtime.getRuntime().exec("C:\\Users\\yoyo\Desktop\\FileUpload.exe");
6. 完整 Selinum script 代码
package practise;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import java.io.IOException;
import java.util.List;
public class FileUpload {
@FindBy(xpath="//*[@id='upload']")
List<WebElement> browseLink;
@FindBy(xpath="//*[@id='uploadOptionType']/div/div/div/form/fieldset/div/div[1]/div")
List<WebElement> chooseFirstOption;
@FindBy(xpath="//*[@id='StartUploadBtn']/span")
List<WebElement> continueButton;
@FindBy(xpath="//*[@id='upload-documents']")
List<WebElement> browseLink1;
public static void main(String[] args)throws InterruptedException,IOException{
System.setProperty("webdriver.chrome.driver", "D:\\SpringWeb\\src\\main\\resources\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://insurance-dev.hsbc.com.hk/documents-service/upload-document-pws");
driver.manage().window().maximize();
((JavascriptExecutor) driver).executeScript("window.scrollTo(0,400);");
FileUpload m = PageFactory.initElements(driver, FileUpload.class);
m.chooseFirstOption.get(0).click();
m.continueButton.get(0).click();
m.browseLink.get(0).click();
Runtime.getRuntime().exec("C:\\Users\\yoyo\\Desktop\\FileUpload.exe");
m.browseLink1.get(0).sendKeys("C:\\Users\\yoyo\\Desktop\\11.png");
m.browseLink1.get(0).sendKeys("C:\\Users\\yoyo\\Desktop\\22.png");
Thread.sleep(5000);
driver.close();
}
}
参考资料:https://www.guru99.com/use-autoit-selenium.html