我膨脹了,測試必要商城小程式,用了 3 種方式!:)
堅持原創輸出,點選藍字關注我吧
作者:清菡
部落格:oschina、雲+社群、知乎等各大平臺都有。
目錄
- 一、Appium 結合 Python 做小程式自動化
- 二、Python 第三方庫 Uiautomator2 做微信小程式、公眾號自動化
- 三、FAuto Test 微信小程式、公眾號 H5 自動化神器
- 四、總結
一、Appium 結合 Python 做小程式自動化
搜一搜:如果從來沒有搜尋過,在這裡點選一下它,歷史記錄是空的。但是如果曾經搜尋過,那一定有歷史記錄。如果不是第一次點選它,用自動化指令碼再次點選的話,不會讓你輸入進去,會報錯。
那就只能從歷史記錄中來選,所以點選一下後要等到歷史記錄中的資訊出來。
等待搜尋框出現-點選搜尋框之後呢,等待了 5 秒鐘。time.sleep(5)
,等待歷史記錄中“必要商城”出來。
可以看到是歷史記錄沒錯,但是歷史記錄它是一個 WebView。
這個 WebView 是微信這個程式的,不屬於小程式,是屬於微信這個應用的。所以這個東西不對外開放,你就沒有辦法知道“必要商城”對應的元素定位是什麼。
不知道怎麼辦?它又不是一個完整的元素,要在一個元素上點點點,只能用座標,因為微信不給開 Debug 屬性。
用座標,通過 adb 命令執行點選操作,adb shell input tap 281 205
281 205 是座標點。
如果有多個歷史記錄,座標肯定會變。自己的手機,保證歷史記錄對應的位置正確就好了。假設測試機也是自己操作,就是測試環境要保持獨立。
當然想辦法保證資料是一直都在的。微信中只要搜尋過都是有歷史記錄的,而且平常使用的時候不會走這條途徑,不會在這裡搜一搜,直接在首頁搜一搜就好了。
點選了必要商城之後,還不夠。座標可以取百分比,但是要注意百分比要控制好。進入必要商城後,這個地方仍然是個 WebView,我還是沒有許可權,只能繼續用座標。
但是這個地方座標範圍就很大了,“必要商城-小程式”這一整塊都可以點選,選一箇中間的點,這裡用比例算一下,應該還是可以的。
大概預估一下,在多個機型中試一下,因為這個需要你不斷測試,測試調整百分比基數的,確保你達到一定的成功率。點選進入小程式頁面:
這個地方都可以識別,這個地方其實不屬於微信了。只是通過微信的渠道來訪問到這樣的一個東西。類似於把這個小型 Web 網站系統嵌入到這個裡面來了。
這裡面的內容,在 Web 網頁隨便都能找到的。所以這個地方一進來之後就要切換,但是載入也需要時間。所以載入的時間要稍微等一等。
首頁、我的、分類、購物車是可以作為 App 應用程式識別的。
可以保證首頁、我的、分類、購物車出現,然後 sleep 5 秒鐘,儘量保證中間區域可以載入出來。
這裡用到了 14 秒鐘。10 秒也是可以的,因為這裡比較慢。現在列印當前所有的上下文cons=driver.contexts
。列印出來後,要切換到 context,這個時候切換和之前的 WebView 是不一樣的。
列出來的 WebView 名字當中,有 2 個跟騰訊有關的,這個 toolsmp 是我選的,之前有com.tencent.mm:tool
。WebView 可能有 2-3 個,只要進入想要的WEBVIEW_com.tencent.mm:toolsmp
,這個是我們在這裡指定識別到的程式:
切進來之後,其實就是個小型的應用系統嵌在這裡面來了。那它可能就不止一個視窗了。不像一個頁面中那麼簡單,小程式就複雜一點。
可能不止一個視窗,所以在進來之後,不要著急,不要認為肉眼看到的,當前就在這個頁面。
還需要你先獲取當前的所有視窗控制程式碼,要判斷你要操作的元素是否在當前的頁面當中。如果不在,那就得換一個,因為一個視窗控制程式碼就代表一個頁面。
所以獲取了當前所有的視窗的控制程式碼:hs=driver.window_handles
,拿到之後對它做了個遍歷:
for handle in hs:
driver.switch_to.window(handle)
#首先切換到這個視窗當中,因為我不知道哪個視窗包含了我要的元素,切換完成之後,我會判斷一下
#當前這個視窗對應的頁面的原始碼當中,有沒有我要找的。比如視窗中有很多必要商城相關的,可以寫必要商城相關的,各種文字都可以用,比如女裝、美妝啊。
print("切換到視窗:",handle)
time.sleep(3)
#print(driver.page_source)
if driver.page_source.find("熱門") !=-1:
break
如果能找到熱門這個字,那我就認為當前是正在我操作的頁面。然後就不再進行後續遍歷了,因為遍歷的過程中是相當於已經切進來了的,如果當前確實很符合條件,就不再遍歷也不再切換到別的視窗,就在當前視窗。
確定當前操作的視窗頁面是什麼之後,接下來的事就是找元素,操作元素。和 Web 自動化一樣。注意:Chromedriver 要準備好。切換的時候要準備 Chromedriver。
二、Python 第三方庫 Uiautomator2 做微信小程式、公眾號自動化
除了這一種方式之外,還有一種方式。就是純 Python 程式碼,不需要搞的這麼複雜。
現在是通過 Appium,Python 也有一個 Uiautomator2 這樣的一個第三方庫,不需要通過 Appium,可以直接和安卓手機通訊。(這是國內某位大神寫的,專門支援 Python 的)
地址:https://github.com/xiaocong/uiautomator
三、FAuto Test 微信小程式、公眾號 H5 自動化神器
另外一種微信小程式、公眾號 H5 的自動化,就是在這個基礎上做了個封裝。這個叫做FAuto Test。
它是基於 Python,但是它有一個缺陷,目前只支援 Python2,還沒有開放到 Python3。
騰訊自己做的開源的框架:https://github.com/Tencent/FAutoTest
可以試下上面官方文件中封裝好的程式碼,可以下載個 2.7 的 Python 裝下,2.7 和 3.4 並不衝突,裝 2 個版本就好了。
但是環境變數,配置一個版本就可以了,不需要把 2.7 配上去,直接配 3.4。
環境變數執行的時候只識別一個。如果你配置了兩個環境變數,只識別前一個,後面那個等於沒有配置是一樣的。
在寫程式碼的時候可以選擇用哪個版本來寫。環境變數配置常用的 3 點幾的版本,2 點幾不用配,直接使用就好了。
四、總結
用 Appium 結合 Python 程式碼,問題比較多,比較尷尬。這個程式碼裡程式名稱比較固定,不太固定是真正在小程式裡操作的是什麼。
但是這個是 Web 自動化。Web 自動化怎麼做就怎麼做,重點是前面的一些固定的方式。
相關文章
- 我膨脹了,測試必要商城小程式,用了3種方式!:)
- [程式設計題] 膨脹的牛牛程式設計
- c++實現的一種程式碼膨脹變形殼C++
- Synchronized鎖及其膨脹synchronized
- web前端面試題:20道做完信心嫉妒膨脹的測試題Web前端面試題
- LoadRunner測試WebService的3種方式Web
- 眼圖測試(訊號完整性測試)-材料熱分析 | TMA測試材料的平均線性膨脹係數
- 表膨脹的查詢方法
- 小程式自動化測試--測試3
- opencv 影像腐蝕、影像的膨脹OpenCV
- 膨脹的template class成員函式函式
- [java][鎖]java鎖的膨脹和優化Java優化
- synchronized的實現原理——鎖膨脹過程synchronized
- OpenCV (iOS)中的腐蝕和膨脹(9)OpenCViOS
- 膨脹、驕傲,程式設計師轉專案經理的原罪程式設計師
- 我用了30行程式碼,爬了知乎好多妹子行程
- 當「SPA」應用遇上了膨脹的專案
- opencv中的影象形態學——腐蝕膨脹OpenCV
- 編寫難於測試的程式碼的5種方式
- 深入分析synchronized原理和鎖膨脹過程(二)synchronized
- PostgreSQL-亂序插入資料導致索引膨脹SQL索引
- 2024年全球主要國家通貨膨脹預測(附原資料表)
- 2025年全球主要國家通貨膨脹預測(附原資料表)
- 單季度釋出一款新遊、擴充套件至數十億玩家,微軟膨脹了套件微軟
- [Python影象處理] 八.影象腐蝕與影象膨脹Python
- C++中泛型使用導致的膨脹問題C++泛型
- IMF:通貨膨脹如何徹底改變經濟理念
- 受通貨膨脹影響最大的支出是什麼?
- 我們測試了上萬款應用程式,總結了APP測試流程和常見問題APP
- 軟體安全測試擔心效果不好?這3個安全測試工具你用了嗎?
- 如何測試微信小程式微信小程式
- Java中測試異常的多種方式Java
- 4步追蹤導致事務日誌膨脹的SQL命令SQL
- jshop小程式商城JS
- 微信小程式——商城篇微信小程式
- Pika 1.5王者歸來!將一切壓扁、膨脹、融化、爆炸,化身為了超強特效利器特效
- 我只用了3步,實現了一個逼真的3D場景渲染3D
- Entity Farmework領域建模方式 3種程式設計方式程式設計