日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

android微信小程序自动填表_微信小程序自动化,记录趟过的坑!

發布時間:2025/3/20 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android微信小程序自动填表_微信小程序自动化,记录趟过的坑! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

項目思想:關鍵字+數據驅動混合測試

基于Android-微信小程序自動化的關鍵是:webview的切換

對于微信App來說如何從NATIVE切換到webview的過程

測試版本信息

1.微信版本:7.0.21

2.Android:7.0

3.appium引入依賴:6.1.0

4.testng引入依賴:6.14.3

初始化實例配置信息

1.配置參數如下:

其中涉及到微信內置webview版本與chromedriver一致性設置,查看流程如下:

第一步:查看微信webview版本信息,這里通過uc-devtools工具查看

uc-devtools工具獲取鏈接:

鏈接:https://pan.baidu.com/s/1GA3EPDz0GD3IyXUsgU8Z3g

提取碼:3lpg

scrcpy真機工具獲取鏈接:

鏈接:https://pan.baidu.com/s/1If7q_empeZgXWVXU0v8rIw

提取碼:3hi9

下載后打開,同時通過真機連接工具scrcpy打開微信,此時即可顯示微信的chromedriver版本號:

從上圖可以看到chromedriver,去chromedriver官網下載對于的版本去驅動

點擊下載對應版本的chromedriver版本

下載后放到resources目錄下,見上圖的配置路徑。

第二部就可以正常使用web的元素查看了:

2.setCapability參數配置如下(入坑-需要先查看下自己微信小程序上下文切換的context,通過下面的方法可以查看):

其中最關鍵是的: options.setExperimentalOption("androidProcess", "com.tencent.mm:appbrand0");

通過driver.getContextHandles()方法獲取從微信app切換到小程序后的所有句柄,配置到啟動參數中。

把需要切換的context,配置到setExperimentalOption中即可。具體配置詳情如下:

//引用配置參數

DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability("platformName", platformName);

capabilities.setCapability("appPackage", appPackage);

capabilities.setCapability("appActivity", appActivity);

capabilities.setCapability("automationName", automationName);

capabilities.setCapability("deviceName",deviceName);

capabilities.setCapability("chromedriverExecutable", chromePath);

capabilities.setCapability("platformVersion","7.0");

capabilities.setCapability("unicodeKeyboard",true);

capabilities.setCapability("noReset",true);

// 不重新簽名apk

capabilities.setCapability("resetKeyboard", true);

// 支持X5內核應用自動化配置

capabilities.setCapability("recreateChromeDriverSessions", true);

/**

* ChromeOptions使用來定制啟動選項,因為在appium中切換context識別webview的時候,

* 把com.tencent.mm:toolsmp的webview識別成com.tencent.mm的webview.

* 所以為了避免這個問題,加上androidProcess: com.tencent.mm:toolsmp

* */

ChromeOptions options = new ChromeOptions();

/**

* 這里很關鍵>>

* ChromeOptions使用來定制啟動選項,因為在appium中切換context識別webview的時候,把com.tencent.mm:toolsmp的webview識別成com.tencent.mm的webview.

* 所以為了避免這個問題,加上androidProcess名:通過driver.getContextHandles()獲取所有的上下文,我這里獲取的是com.tencent.mm:appbrand0

* */

options.setExperimentalOption("androidProcess", "com.tencent.mm:appbrand0");

capabilities.setCapability(ChromeOptions.CAPABILITY, options);

// 初始化會默認將chrome瀏覽器打開,需要將Browser置為空

capabilities.setBrowserName("");

// 每次啟動時覆蓋session,否則第二次后運行會報錯不能新建session

capabilities.setCapability("sessionOverride", true);

URL url = null;

try {

url = new URL("http://127.0.0.1:4723/wd/hub");

} catch (MalformedURLException e) {

e.printStackTrace();

}

driver = new AndroidDriver(url, capabilities);

關鍵實現邏輯

1.查了一下網上很多說是需要在微信app內的搜搜功能進入小程序,但對于體驗版的小程序這里肯定搜索不到的。所以進入被測體驗版小程序最簡單的方法是:下拉微信框+點擊小程序坐標進入最直接。

首次進入小程序后都會在小程序列表展示,最新的位置都是第一個。

1.通過開啟手機設置內置的【指針位置】來定位小程序的坐標

其中通過坐標點擊方法如下:

public void taptest(AndroidDriver driver,int x, int y){

/**設置顯示等待時間10s driver=baseAndroidDriver.getDriver(baseConfig)

特注:顯示等待與隱式等待相對,顯示等待必須在每一個需要等待的元素前面進行聲明,如果在規定的時間內找到元素,則直接執行,即找到元素就執行相關操作

*/

wait = new WebDriverWait(driver,20);

//tap點擊坐標,輸入坐標,然后再release()釋放坐標點,用perform()去執行一系列action操作

action = new TouchAction(driver).tap(PointOption.point(x,y)).release().perform();

}

2.實現代碼-webview切換成功后就可以正常使用顯示等待時間解決元素加載問題。

//進入微信下拉滑動

swipeToDown(driver);

//點擊被測小程序,通過坐標點擊

taptest(driver,190,673);

//allure截圖存留

// SaveFailureScreenUtil.saveFailureScreenShot(driver);

//切換webview頁面

// 獲取到所有的contexts,并在啟動參數里配置

System.out.println("所有的contexts:" + driver.getContextHandles());

// 切換到小程序webview對應的context中

driver.context("WEBVIEW_com.tencent.mm:appbrand0");

System.out.println("切換context成功!");

// 獲取到所有的handles

Set windowHandles = driver.getWindowHandles();

System.out.println("所有的windowsHandles" + windowHandles);

for (String handle :windowHandles){

System.out.println("切換到對應的windowHandle:" + handle);

driver.switchTo().window(handle);

String strTip = "IT互聯網熱門課程";

if(driver.getPageSource().contains(strTip)){

//找到了對應的窗口,退出循環

break;

}else {

System.out.println("查詢的:"+strTip+"頁面可能不包含該文本信息");

}

}

//下拉滑動操作

swipeToUp(driver);

//進入正常的web元素定位操作

//點擊模擬試卷

UIElementUtil.clickButton("騰訊課堂","分類",driver);

xml維護的元素定位信息

通過日志可以看到已經切換到webview并定位元素點擊成功了

所有的contexts:[NATIVE_APP, WEBVIEW_com.tencent.mm:appbrand0, WEBVIEW_com.tencent.mm:appbrand2]

切換context成功!

所有的windowsHandles[CDwindow-ABCE2F2B94ED5F6A2BF2153F6CFEFF21, CDwindow-FA78683E0B1150082058BBC8EFF73001]

切換到對應的windowHandle:CDwindow-ABCE2F2B94ED5F6A2BF2153F6CFEFF21

查詢的:IT互聯網熱門課程頁面可能不包含該文本信息

切換到對應的windowHandle:CDwindow-FA78683E0B1150082058BBC8EFF73001

INFO 2020-12-14 10:24:22 [main] com.iappium.utils.UIElementUtil.clickButton(UIElementUtil.java:186) - [分類]該點擊事件耗時:445ms

最后-更多工具和技術請關注:Coding測試

其中UIElementUtil工具類是封裝的關鍵字工具欄,通過xml維護定位元素(等同于ui的自動化測試的關鍵字),由于UIElementUtil使用的是dom4j解析的xml文件,內容較多,需要看的話可以移步至項目源碼中查看iappium4j項目app+小程序自動化測試-源碼

總結

以上是生活随笔為你收集整理的android微信小程序自动填表_微信小程序自动化,记录趟过的坑!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。