appium遠程連手機調控


背景:最近寫了一篇博客是用 adb 遠程連接手機(真機),聯想到appium底層也是用的adb命令,那么可不可以將appium的代碼通過遠程調試手機,

          而不用usb線調試呢?下面是我實驗的過程。

 

1、先將appium的代碼通過usb線連接形式,先調試一遍(為了讓手機上安裝一些必要的appium的apk,以及一些權限的開啟)

 

import time

from appium import webdriver

# server 啟動參數
desired_caps = {}
# 設備信息
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '10'
desired_caps['deviceName'] = '192.168.56.101:5555'
# app的信息
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
# 解決輸入中文
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
desired_caps['noReset'] = True  # 保留軟件數據,否則每次一開始都要有一些權限問題,會報錯的
# 聲明我們的driver對象
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

2、查看appium的運行日志:

根據上圖appium運行日志可以發現,有三個很重要的參數:5037、5555、以及手機ip地址。
在之前通過adb遠程連接手機時,介紹過這幾個端口的意義,直接上圖:
這里再介紹一下:5037和5555端口作用
5037是adb client開啟的端口,用來發送adb命令
adb server監聽的就是5037端口,5555端口是用來與設備(pc)進行連接通信的。
所以,appium的遠程通信,實質上就是adb的遠程通信。
所以要想實現appium遠程連接手機調控步驟:(前提,腳本先用usb進行有線連接跑一遍腳本,進行一些前置的准備:必要apk下載,權限問題)
1、開啟appium server(將python代碼轉化為adb命令)  
            appium讓一個腳本去跑到多台手機。
                appium -p 4723 -bp 4724 -U 192.168.57.101:5555    
                appium -p 4725 -bp 4726 -U 192.168.57.102:5555
   
2、adb 設置為遠程連接手機的形式
 
3、運行腳本,結果成功,可以通過遠程連接的形式將appium腳本跑到手機上了。
 
踩坑:當我以客戶端的形式啟動appium時,是可以打開手機設置頁面的,
但是當我以命令行形式啟動server時,卻打不開,並保錯(查看appium日志看到報錯信息:Error: Appium Settings app is not running after 5000ms),
解決方法:
該問題並不常見,主要是手機操作系統的問題
    程序無法無法自動打開appium  settings,那么我們可以手動打開appiumsettings服務(程序沒有界面,會出現打開就閃退的錯覺,這是正常現象)
    然后再運行腳本。(我的原因是手機無法自動打開Appium Settings,通過手動打開即可正常運行)
如果覺得此方法麻煩,那就只能更新系統或者更換手機解決了。
教訓:要學會看日志報錯信息
 


免責聲明!

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



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