目錄
硬件準備
筆記本:win10、python2.7
手機:HUAWEI Mate 20 Pro
USB數據線
功能實現流程
- 手機與筆記本連接
- 安裝ADB,實現筆記本與手機的交互
- 安裝Appium,獲取手機界面組件的ID等信息
- 安裝AndroidViewClient
- 編寫腳本
手機與筆記本連接
參考:https://jingyan.baidu.com/article/5552ef47af9c47518ffbc9a6.html
注意:HUAWEI Mate 20 Pro 有個坑,執行上述操作前需要把懸浮球關閉,否則會連接不成功。
關閉懸浮球位置:手機設置--系統和更新--系統導航方式--懸浮導航
安裝ADB
adb即Android Debug Bridge,可以實現在pc端通過cmd命令行調試安卓移動端。
adb下載安裝參考:https://www.jianshu.com/p/7c0a6da594c8
驗證:win+R打開命令行,輸入adb devices顯示如下圖表示安裝成功(前提是手機與筆記本已正確連接)
ADB相關命令:
1.顯示當前運行的全部模擬器: adb devices
2.啓動ADB adb start-server
3.停止ADB adb kill-server
4.點擊屏幕座標爲 X Y的位置:adb shell input tap X Y
5.滑動屏幕:adb shell input swipe startX startY endX endY
驗證:在cmd窗口輸入 adb shell input swipe 800 800 500 500
正常情況下手機屏幕會向上滑動一段距離,如果沒有,需要排查前面的步驟是否有操作失誤。
安裝Appium Desktop
我們用Appium desktop來獲取元素的基本信息。
下載地址:https://github.com/appium/appium-desktop/releases
雙擊.EXE文件安裝即可
使用Appium Desktop獲取元素信息
- 打開appium desktop
輸入下面的信息,點擊啓動會話
{
"deviceName": "HUAWEI Mate 20 Pro (UD)",
"automationName": "Appium",
"platformName": "Android",
"platformVersion": "10",
"appPackage": "com.tencent.mm",
"appActivity": "com.tencent.mm.ui.LauncherUI",
"noReset": "True",
"noSign": "True"
}
點擊啓動會話後,手機會提示安裝apk,點擊安裝即可。之後電腦會顯示下面界面
此時可以藉助appium desktop來獲得元素的id,下圖我們得到評論按鈕的id是:com.tencent.mm:id/eyz
安裝AndroidViewClient
pip install AndroidViewClient
注:AndroidViewClient不支持python3.X,安裝之前要確保你的python版本是python2.7
完整代碼
# coding: utf-8
import sys
import os
import re
import time
from com.dtmilano.android.viewclient import ViewClient
def wechat():
# 連接手機
device, serialno = ViewClient.connectToDeviceOrExit()
vc = ViewClient(device, serialno)
# 找到評論按鈕
# 使用appium desktop 來查看評論按鈕的resource-id爲"com.tencent.mm:id/eyz"
# 輸入框是com.tencent.mm:id/aqe,發送按鈕是aql;
succeed = 0
Failure = 0
while True:
try:
# 找到評論按鈕並點擊一下
vc.dump()
pinglun_button = vc.findViewByIdOrRaise("com.tencent.mm:id/eyz")
pinglun_button.touch()
# 找到點贊按鈕,並點擊
vc.dump()
zan_button = vc.findViewWithText(u"贊")
zan_button.touch()
succeed = succeed + 1
print "已爲%d人點贊" %(succeed)
except:
#失敗的可能是已經點過讚了
Failure = Failure + 1
print "失敗了%d次" %(Failure)
#有時候會誤點擊到拍照按鈕,所以通過一個滑動先將界面恢復到正常狀態
os.system("adb shell input swipe 900 900 900 850")
os.system("adb shell input swipe 900 900 900 500")
if __name__ == '__main__':
wechat()
注意:運行代碼前要吧appium desktop退出