Python + Appium 自動化操作微信


環境

本文主要環境如下:

  • Win10
  • JDK1.8
  • Appium
  • Python3.7
  • android-sdk
  • mumu 模擬器

JDK

下載地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

配置環境變量:

  計算機(右鍵)->屬性->高級系統設置->高級->環境變量->新建環境變量 JAVA_HOME

  系統變量->找到 Path 變量->編輯->在變量值的末尾添加;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

  新建 CLASSPATH 變量,變量值為:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

 

android-sdk

下載地址:https://www.androiddevtools.cn/

配置環境變量:與 JDK 配置類似,

  新建環境變量 ANDROID_HOME,變量值為 android-sdk 位置,比如:D:\android-sdk-windows

  在 Path 變量值的末尾添加 ;%ANDROID_HOME%\tools;%ANDROID_HOME%\build-tools\30.0.0-preview;%ANDROID_HOME%\platform-tools

 

Appium

下載地址:https://github.com/appium/appium-desktop/releases/tag/v1.18.3

安裝 Python 庫:pip install appium-python-client

Appium 安裝完成啟動后,點擊編輯配置,查看 JDK 和 android-sdk 是否正確,不正確的需要手動修改

 

mumu

下載地址:http://www.51xiazai.cn/soft/584481.htm

mumu 模擬器下載完后,除了根據自己需要更改一下安裝路徑,其他選項默認即可安裝,裝完后打開點擊應用中心,搜一下微信,搜到之后安裝一下,微信安裝完成后再用自己的微信號登錄一下。

因為我們是通過安卓的 adb 連接虛擬機的,因此需要在控制台執行 adb connect 127.0.0.1:7555 命令,讓 adb 連接上虛擬機。

執行了上面連接模擬器的命令后,我們可以在 cmd 控制台輸入 adb devices 查看當前連接的虛擬機。


 

 

使用

首先啟動 Appium 和 mumu,因為之前我們已經配置了 Appium,此時我們直接點擊 Appium 的啟動服務器按鈕即可,如下圖所示:

 

啟動之后如圖所示:

 

 

 

 

 

現在我們可以先通過 Python 來啟動一下微信,代碼實現如下:

desired_caps = {
        "platformName": "Android",  # 操作系統
        "deviceName": "emulator-5554",  # 設備 ID
        "platformVersion": "6.0.1",  # 設備版本號
        "appPackage": "com.tencent.mm",  # app 包名
        "appActivity": "com.tencent.mm.ui.LauncherUI",  # app 啟動時主 Activity
        'noReset': True,  # 是否保留 session 信息,可以避免重新登錄
        'unicodeKeyboard': True,  # 使用 unicodeKeyboard 的編碼方式來發送字符串
        'resetKeyboard': True  # 將鍵盤給隱藏起來
    }
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

執行上述代碼之后,如果發現 mumu 模擬器中的微信已經啟動了,就說明基本環境已經調通了;如果執行代碼后發現調不到 mumu 模擬器中的微信,先在 cmd 中執行一下 adb connect 127.0.0.1:7555 命令,再執行程序即可。

 

實現微信內信息的發送(實操)

我們先來使用 Appium 實現信息發送的操作,基本過程為:

  打開微信->點擊搜索輸入框->輸入文件傳輸助手->點擊文件傳輸助手->點擊文本輸入框->輸入文本->點擊發送,功能的代碼實現如下:

import time
from appium import webdriver

if __name__ == '__main__':
    desired_caps = {
        "platformName": "Android",  # 操作系統
        "deviceName": "emulator-5554",  # 設備 ID
        "platformVersion": "6.0.1",  # 設備版本號
        "appPackage": "com.tencent.mm",  # app 包名
        "appActivity": "com.tencent.mm.ui.LauncherUI",  # app 啟動時主 Activity
        'noReset': True,  # 是否保留 session 信息,可以避免重新登錄
        'unicodeKeyboard': True,  # 使用 unicodeKeyboard 的編碼方式來發送字符串
        'resetKeyboard': True  # 將鍵盤給隱藏起來
    }
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
    time.sleep(5)
    print('點擊微信搜索框')
    driver.find_element_by_id('com.tencent.mm:id/f8y').click()
    time.sleep(5)
    print('在搜索框輸入搜索信息')
    driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys('文件傳輸助手')
    time.sleep(3)
    print('點擊搜索到的內容')
    driver.find_element_by_id('com.tencent.mm:id/gbv').click()
    time.sleep(3)
    # 輸入文字
    driver.find_element_by_id('com.tencent.mm:id/al_').send_keys('hello')
    time.sleep(3)
    # 輸入表情
    driver.find_element_by_id('com.tencent.mm:id/anz').click()
    time.sleep(3)
    driver.find_element_by_id('com.tencent.mm:id/rv').click()
    # 點擊發送按鈕發送信息
    driver.find_element_by_id('com.tencent.mm:id/anv').click()
    # 退出
    driver.quit()

 

補充說明,元素定位如何選取呢?

首先我們點擊 Appium 中的放大鏡位置,如下圖所示:

 

 

 

 我們在圖中所需功能下方將代碼中的 desired_caps 信息配置進去,配置好后點擊啟動會話按鈕,啟動之后我們會發現 Appium 中與 mumu 中的微信效果不一致,如下圖所示:

 

查找元素信息

 

 

參考地址:https://mp.weixin.qq.com/s/cMdQKerwD-UIX5Xcnb_GIw


免責聲明!

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



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