java+selenium+autoIt 实现下载(打印)功能
selenium是一个开源的自动化测试框架,它可以模拟用户对浏览器的操作,进行自动化的测试。但是,它不仅仅只能用来做测试。
AutoIt 是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。而这是其它语言不可能做到或无可靠方法实现的(例如VBScript和SendKeys)。在这个项目中AutoIt 主要用于在浏览器中点击下载后,保存文件时,对windos弹框进行操作。
因为业务需求,需要把一个html网页转化成PDF,本来准备考虑用iText来对html转为PDF,但是我们已经拥有html的网页了,用iText感觉太麻烦,然后又找了一个第三方html->pdf,结果需要收费等一些其它原因,最终决定采用selenium+chrome+java+autol对网页进行导出PDF。
即使这个是打印成PDF,也可用于下载
环境:springboot v2.1.2 + maven + selenium 3.141.59 + chrome 71.0.3578.98
1 selenium
1.1 关于selenium
selenium是一个自动化测试框架,可以模拟用户的浏览器操作,可以和几门热门的语言相结合,例如java,python,接下来我将使用selenuim来操作chrome来模拟用户将网页保存为PDF。
1.2 selenium连接chrome
1.2.1 添加selenium的jar包
<!-- Selenium dependency -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>3.141.59</version>
</dependency>
1.2.2 下载谷歌浏览器驱动
因为我用的是最新的chrome,所以下载的也是暂时最新的驱动,每个驱动对应的谷歌浏览器版本也不一样,你们可以查看相应的文档,查看自己所对应的驱动
下载完驱动之后,将驱动放置于resource目录下的driver文件夹内
1.2.3 加载WebDriver
/*获取浏览器的连接*/
public static WebDriver openAccess() {
//在idea运行的谷歌驱动路径
System.setProperty("webdriver.chrome.driver",
"src/main/resources/driver/chromedriver.exe");
//打jar包后的谷歌驱动路径
/*String driverPath = System.getProperty("user.dir")+File.separator+"driver"+ File.separator+"chromedriver.exe";*/
HashMap<String, Object> chromePrefs = new HashMap<>