自動化操作微信的幾種方案


  最近接到一個任務,需要自動操作微信,實現微信好友間自動收發消息,自動將群成員添加為好友。第一反應就是簡單,使用 appium 等自動化測試工具即可。等實現完了才知道,第一,不能連usb線。第二,不能在同一個局域網。第三,不能root。由於之前沒做過app自動化測試,也不會app開發。所以走了很多彎路,所以特意記錄一下。

  自動化操作微信有如下幾種方案:

    1、通過 ItChat api 實現

    2、通過 appium 等自動化工具

    3、借助 ATX 在手機上使用 QPython 運行 uiautomator2 腳本

    4、將 uiautomator2 腳本打包到 apk 中在手機上運行

    5、通過安卓系統的輔助服務(AccessibilityService)功能實現自動化

方案一:通過 ItChat api 實現

   ItChat api 的原理是實現了網頁版微信的請求,模擬網頁微信的請求,實現對應的功能。也就是說只要網頁版微信有的功能,你就可以有。

  ItChat 庫的GitHub倉庫地址+簡單入門示例 https://github.com/littlecodersh/ItChat

  ItChat 庫的API文檔 https://github.com/littlecodersh/ItChat/blob/master/docs/api.md

  問題:

  • 據說新注冊的微信號不能登錄網頁版微信,由於這個方案被否,我也沒繼續研究
  • ItChat容易封號,這個我考慮是秒回消息引起,寫個方法隨機回復應該沒有問題
  • ItChat部分功能過時。我看的時候最后更新時間是18年9月。有些api可能是因為微信接口升級后造成錯誤。例如得到群成員,目前list只返回你自己。看了下源碼,並對了一下網頁中的F12,發現接口地址改了。由於這個方案被否,也沒往下看,不過理論上稍做修改即可

方案二:通過 appium 等自動化工具

   這種方案也是咱們測試工程師最常用的,具體實現請參見baidu。

  問題:必須連接usb線(當然可以通過wifi無線連接)或跑在虛擬機中。

  wifi無線鏈接:

 方案三:借助 ATX 在手機上使用 QPython 運行 uiautomator2 腳本

   此方案的原理是在手機上安裝 atx-agent 。然后在手機上啟動 atx-agent 服務,之后在手機的 QPython 上運行 uiautomator2 腳本(其實就是將pc服務端,跑到了手機上)。

  問題:每次重啟手機后必須先連接 usb 線啟動 atx-agent,曾經嘗試在手機上啟動 atx-agent 但最后沒能成功,誰會啟動還請不吝賜教~~~

  參考文檔:

    https://testerhome.com/topics/11980

    文檔的總體思路是先在pc上安裝必要庫,然后手動將 uiautomator2、retry 庫復制到手機上,但有可能是我的手機沒有 root 的原因相應的目錄 adb 沒有權限 push 文件。

    后來直接在 QPython 中執行 pip3 install 直接安裝 uiautomator2、retry 成功,命令如下: 

pip3 install uiautomator2
pip3 install retry

方案四:將 uiautomator2 腳本打包到 apk 中在手機上運行

  此方案的原理是將 uiautomator2 腳本打包到 apk 中,然后在手機上直接運行打包好的 apk 即可。

  具體實現很簡單,按照文檔一步步做即可,參考文檔:https://blog.csdn.net/pgz100/article/details/82971699

  問題:要想運行此 apk 需要 root 權限。也就是要么將手機系統 root 了,要么將 apk 使用系統簽名打包成具有系統權限的 apk 。

  • 第一種相對簡單,只要你 root 了你的手機系統即可

  第二種就不好搞了

  • 國內廠商對安卓系統進行了定制,並且修改了簽名文件。如果他們開放系統簽名文件,也就是你可以輕易的卸載他們預裝的app,所以這個簽名文件不是那么好得到。
  • 或者可以下載 google 開源的簽名文件打包你的 apk,然后再從 google 下載打包好的原生安卓包,這樣你簽名的 apk 在這個系統上運行就有系統權限。 或者下載安卓源碼自己編譯打包一個安卓系統,這樣你想干嘛都可以了,但我沒戲。

 方案五:通過安卓系統的輔助服務(AccessibilityService)功能實現自動化

  輔助服務(AccessibilityService)本來是為了幫助殘障人使用安卓設備。首先擴展 AccessibilityService 實現一個自己的服務,並實現 onAccessibilityEvent 抽象方法,並以一個服務的形式在后台運行。這樣當頁面切換、焦點改變、收到通知、彈出Toast等,系統會回調 onAccessibilityEvent 方法,這樣你就可以干自己想干的事情了。

  參考文檔:https://juejin.im/post/5acb49126fb9a028cc6186f1

  問題:每次運行你的 apk 都需要手動打開 輔助功能。這么干有些費勁,不過也是最接近我們的要求~~~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM