appium+Python真機(jī)運(yùn)行
一,打開手機(jī)的USB調(diào)試模式
二,連接手機(jī)到電腦
將手機(jī)用數(shù)據(jù)線連接到電腦,并授權(quán)USB調(diào)試模式。查看連接的效果,在cmd下運(yùn)行命令:adb devices查看UDID,如下圖所示:
如果有輸出,就表示連接成功。

三,啟動(dòng)Appium服務(wù)
打開appium-desktop

四,測(cè)試腳本的編寫及運(yùn)行
真機(jī)運(yùn)行的測(cè)試腳本與模擬器上幾乎是相同的,就是有些兒配置不太一樣。具體腳本demo如下demo.py:
import time???????#導(dǎo)入timefrom appium import webdriver???#導(dǎo)入appiumdesired_caps = {}desired_caps['platformName'] = 'Android'??#測(cè)試的手機(jī)是Androiddesired_caps['deviceName'] = '127.0.0.1:7555'????#設(shè)備名稱desired_caps['platforVersion'] = '6.0.1'???#設(shè)備系統(tǒng)版本desired_caps['app'] = r'C:\Users\Administrator\Desktop\comqinheispeak_3.4.3.12202a.apk'????#app路徑desired_caps['appPackage'] = 'com.qinhe.ispeak'??#app包名desired_caps['appActivity'] = 'com.qinhe.ispeak.AppStartActivity'???
desired_caps["unicodeKeyboard"] = "True"desired_caps["resetKeyboard"] = "True"desired_caps['noReset'] = 'True'driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)???#啟動(dòng)apptime.sleep(5)???#啟動(dòng)app時(shí),需要一定時(shí)間進(jìn)入引導(dǎo)頁,所以必須設(shè)置等待時(shí)間,不然下面會(huì)一直報(bào)錯(cuò)定位不到元素
?
注:在測(cè)試用例運(yùn)行過程中,正常情況下手機(jī)會(huì)自動(dòng)安裝Settings和Unlock,有些手機(jī)有兼容性問題,Settings和Unlock程序打不開,所以每次運(yùn)行腳本都會(huì)提示安裝,按提示允許安裝就可以。
Appium的Desired Capabilities是擴(kuò)展了webdriver的Desired Capabilities的,下面的一些通用配置是需要指定的:?
[if !supportLists]·?[endif]automationName:使用哪種自動(dòng)化引擎。appium(默認(rèn))還是Selendroid?
[if !supportLists]·?[endif]platformName:使用哪種移動(dòng)平臺(tái)。iOS,?Android, orFirefoxOS?
[if !supportLists]·?[endif]deviceName:?jiǎn)?dòng)哪種設(shè)備,是真機(jī)還是模擬器?iPhone Simulator,?iPad Simulator,?iPhone Retina 4-inch,?Android Emulator,?Galaxy S4, etc...
[if !supportLists]·?[endif]app:應(yīng)用的絕對(duì)路徑,注意一定是絕對(duì)路徑。如果指定了appPackage和appActivity的話,這個(gè)屬性是可以不設(shè)置的。另外這個(gè)屬性和browserName屬性是沖突的。
[if !supportLists]·?[endif]browserName:移動(dòng)瀏覽器的名稱。比如Safari' for iOS and 'Chrome', 'Chromium', or 'Browser' for Android;與app屬性互斥。
[if !supportLists]·?[endif]udid:物理機(jī)的id。比如1ae203187fc012g。
下面這些屬性是android平臺(tái)特定的:?
[if !supportLists]·?[endif]appActivity:待測(cè)試的app的Activity名字。比如MainActivity, .Settings。注意,原生app的話要在activity前加個(gè)"."。
[if !supportLists]·?[endif]appPackage:待測(cè)試的app的java package。比如com.example.android.myApp, com.android.settings。
?
獲取Android app的appActivity
網(wǎng)上有寫很多方法https://testerhome.com/topics/1030,評(píng)論區(qū)還有補(bǔ)充
我用的是把a(bǔ)pk后綴改為zip格式,打開壓縮包后再打開AndroidManifest.xml文件。找到manifest和activity地方,就是包名跟activity名。?

運(yùn)行python
?
