前言
首先介绍下在本文出现的几个比较重要的概念:
备注:本文介绍的技巧需要Fun版本大于等于2.10.2。
依赖工具本项目是在MacOS下开发的,涉及到的工具是平台无关的,对于Linux和Windows桌面系统应该也同样适用。在开始本例之前请确保如下工具已经正确的安装,更新到最新版本,并进行正确的配置。
Docker
Fun
Fcli
Fun和Fcli工具依赖于docker来模拟本地环境。
对于MacOS用户可以使用homebrew进行安装:
brewcaskinstalldockerbrewtapvangie/formulabrewinstallfunbrewinstallfcli
Windows和Linux用户安装请参考:
安装好后,记得先执行funconfig初始化一下配置。
注意,如果你已经安装过了fun,确保fun的版本在2.10.2以上。
$快速开始
初始化
使用funinit命令可以快捷地将本模板项目初始化到本地。
funinitvangie/selenium-java-example
安装依赖
$funinstall
本地测试
测试代码ChromeDemo的内容为:
publicclassChromeDemoimplementsStreamRequestHandler{publicvoidhandleRequest(InputStreaminputStream,OutputStreamoutputStream,Contextcontext)throwsIOException{("","/code/chromedriver");ChromeOptionsoptions=newChromeOptions();("/code/headless-chromium");("--disable-extensions");//("--disable-gpu");//("--disable-dev-shm-usage");//("--no-sandbox");//("--headless");WebDriverdriver=newChromeDriver(options);("");(("Pagetitleis:"+()+"\n").getBytes());();}}本地运行
$mvnpackagefunlocalinvokeseleniumFCInvokeStartRequestId:68::handleRequestcacheisnull!(47ead77cb35ad2a9a83248b292151462a66cd881),201911:34:27:Detecteddialect:OSSPagetitleis:云端集成开发环境FCInvokeRequestId:68c83b4c-b053-479c-9b0e-9503582ccb56RequestId:68c83b4c-b053-479c-9b0e-9503582ccb56BilledDuration:5265msMemorySize:1998MBMaxMemoryUsed:240MB
部署
$mvnpackagefundeploy
执行
$fclifunctioninvoke-schrome-fseleniumPagetitleis:云端集成开发环境关于文件尺寸
由于chromedriver和headless-chromium压缩后体积已经非常接近50MB,留给用户Jar的空间非常少,所以另外制作了一个高压缩比版本,使用压缩比更高的brotli算法进行压缩,压缩后的大小为32.7MB。然后在运行时使用initializer进行解压,解压耗时大约为3.7S。
参考阅读