微信小程序自动化测试的关键步骤
- 设置 chromedriver 正确版本
- 设置 chrome option 传递给 chromedriver
- 使用 adb proxy 解决 fix chromedriver 的 bug
adb proxy
mitmdump -p 5038 --rawtcp --mode reverse:http://localhost:5037/ -s adb_proxy.py
基本 capability 设置
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
desiredCapabilities.setCapability("platformName", "android");
desiredCapabilities.setCapability("deviceName", "测试人社区 ceshiren.com");
desiredCapabilities.setCapability("appPackage", "com.tencent.mm");
desiredCapabilities.setCapability("appActivity", "com.tencent.mm.ui.LauncherUI");
desiredCapabilities.setCapability("unicodeKeyboard", "true");
//高危操作,如果设置错误,聊天记录会被清空,建议使用小号测试
desiredCapabilities.setCapability("noReset", "true");
chromedriver 版本配置
//第一步:设置正确的 chromedriver
//简单粗暴的解决方案
desiredCapabilities.setCapability("chromedriverExecutable", "/Users/seveniruby/projects/chromedriver/chromedrivers/chromedriver_78.0.3904.11");
desiredCapabilities.setCapability("chromedriverExecutable", "/Users/seveniruby/projects/chromedriver/chromedrivers/chromedriver_2.23");
//完善的版本选择方案,不过会优先找 android webview 默认实现
desiredCapabilities.setCapability("chromedriverExecutableDir", "/Users/seveniruby/projects/chromedriver/chromedrivers");
desiredCapabilities.setCapability("chromedriverExecutableFile", "/Users/seveniruby/projects/Java3/src/main/resources/mapping.json");
//打印更多 chromedriver 的 log 方便定位问题
desiredCapabilities.setCapability("showChromedriverLog", "true");
//第二步:设置 chromeOption 传递给 chromedriver
//因为小程序的进程名跟包名不一样,需要加上这个参数
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("androidProcess", "com.tencent.mm:appbrand0");
desiredCapabilities.setCapability("goog:chromeOptions", chromeOptions);
//必须得加上,因为默认生成 browserName=chrome 的设置,需要去掉
desiredCapabilities.setCapability("browserName", "");
//第三步:设置 adb proxy
//通过自己的 adb 代理修复 chromedriver 的 bug 并解决 @xweb_devtools_remote 的问题
desiredCapabilities.setCapability("adbPort","5038");
for f in /tmp/wx_*.png;do open $f;done