前言:有很多公司做一些客戶端的應用,每次發版都要耗費人力去手動回歸比較費時,那么我們就想着去怎么去驅動人為的操作變為機器的操作過程,當然想着進行UI自動
那么我們就要考慮怎么去實現exe應用程序的自動化,此刻引來了幾個問題值得我們去思考
1:exe的應用基於什么框架實現的其原理是什么?
2:怎么去自動啟動殼
3:怎么去遠程調式端口對殼子嵌入的網頁進行做一些控制操作
一:應用程序的實現原理
1:exe的應用程序eg: electron 都是基於CEF開源的chromenium框架,selenium cef/electron(打包桌面程序)/qtwebbengine(渲染頁面)
2:ChromeDriver和Selenium是用於自動測試基於Chromium的應用程序的工具,可以使用多種語言編寫:Java,Python等
3:ChromeDriver使用DevTools遠程調試協議(通過--remote-debugging-port=XXXX
傳遞給應用程序的命令行標志進行配置)與基於Chromium的應用程序進行通信進行一些頁面元素的控制。
二:實例如下:
1:安裝JDK,然后將安裝的bin目錄添加到PATH的環境變量中
2:創建一個自動化文件目錄,用於存放啟動的應用
3:下載符合版本的驅動 chromedriver (http://chromedriver.storage.googleapis.com/index.html)
4:創建一個maven項目 引入依賴的jar 第三方庫
5:創建一個DriverInstant.java (啟動應用程序,此類是一個封裝好的)
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
public class DriverInstant {
private static WebDriver sInstant;//單例
public static WebDriver getInstant(){
if (sInstant==null) {
//設置webdriver.chrome.driver屬性
System.setProperty("webdriver.chrome.driver", "D:/auto/chromedriver.exe");
//聲明chromeoptions,主要給chrome設置參數
ChromeOptions options = new ChromeOptions();
// 添加用戶配置文件路徑
options.setBinary("XXXXXXXXX.exe");
options.addArguments("remote-debugging-port=遠程調試端口號");
//新建一個WebDriver的對象,但是New的是chrome的驅動 實例化chrome對象
sInstant = new ChromeDriver(options);
//WebDriver driver=new ChromeDriver();
sInstant.get("嵌入的頁面鏈接");
System.out.println(sInstant.toString());
}
return sInstant;
}
}