溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

發(fā)布時(shí)間:2022-01-05 17:24:26 來(lái)源:億速云 閱讀:289 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了“如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試”這篇文章吧。

1.什么是Appium

appium是一個(gè)開源的測(cè)試自動(dòng)化框架,可以與原生的、混合的和移動(dòng)的web應(yīng)用程序一直使用。它使用WebDriver協(xié)議驅(qū)動(dòng)IOS(內(nèi)置的測(cè)試引擎xcuitest)、Android(uiautomator2,Espresso)和Windows應(yīng)用程序

原生應(yīng)用程序:安卓程序是用JAVA或kotlin開發(fā)出來(lái)的,這種程序是原生應(yīng)用程序,原生應(yīng)用比較流暢,好調(diào)用,缺點(diǎn)是不同的端需要的開發(fā)語(yǔ)言不同

web應(yīng)用程序:就web應(yīng)用程序可以直接放到手機(jī)端來(lái)運(yùn)行,web是用html+css+js編寫的

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

混合應(yīng)用程序:結(jié)合原生與web應(yīng)用程序,有些頁(yè)面用原生的,有些頁(yè)面使用web應(yīng)用程序

國(guó)內(nèi)比較出名的框架:

  • appium

  • airtest 現(xiàn)在是由阿里在維護(hù),最開始是運(yùn)用在游戲測(cè)試,和appium的功能差不多

  • uiautomator2(用法簡(jiǎn)單,非常python,只支持原生的,不支持其他)

設(shè)計(jì)哲學(xué):

  •  你沒(méi)有必要為了自動(dòng)化而重新編譯你的應(yīng)用或者經(jīng)任何方式修改它(Android/IOS系統(tǒng)自帶框架)

  • 你不應(yīng)該被限制在特定的語(yǔ)言或框架上來(lái)編寫運(yùn)行測(cè)試(API調(diào)用,接口)

  • 移動(dòng)端自動(dòng)化框架在自動(dòng)化接口方面不應(yīng)該重造輪子(WebDriver,appium是在selenium的基礎(chǔ)上開發(fā)的)

  • 移動(dòng)端自動(dòng)化框架應(yīng)該開源,不但是在名義上而且在精神和實(shí)踐上都要實(shí)至名歸

2.啟動(dòng)一個(gè)app自動(dòng)化程序的步驟

打開模擬器,或者連接上手機(jī)(注意開發(fā)者模式以及USB調(diào)試模式已經(jīng)開啟,手機(jī)授權(quán)要確認(rèn),否則是連接不上的)

在命令窗口輸入adb devices(查看設(shè)備名稱)        

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

開啟appium服務(wù)appium客戶端代碼連接服務(wù)

3.appium服務(wù)介紹

中文設(shè)置

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

除了簡(jiǎn)單設(shè)置,還有一些高級(jí)設(shè)置,我們可以看一下

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

保存了可以查看預(yù)設(shè),方便以后使用

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

編輯配置是進(jìn)入修改環(huán)境變量 

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

 主機(jī)和端口號(hào)不需要設(shè)置,直接可以開啟服務(wù)器 

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

開啟后,可以看到服務(wù)器運(yùn)行中,右邊三個(gè)按鈕的功能分別是啟動(dòng)檢查器會(huì)話,獲取原始日志,停止運(yùn)行服務(wù)器

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

 如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

 點(diǎn)擊后自動(dòng)經(jīng)記事本打開,如果安裝了其他編輯軟件,可以選擇打開方式

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

服務(wù)開啟后,就可以使用python來(lái)進(jìn)行客戶端來(lái)連接服務(wù)

4. appium客戶端使用

使用前確定已經(jīng)安裝了,pip install appium-python-client,安裝后,直接導(dǎo)入使用

看一下Remote的源代碼

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

同時(shí)appium服務(wù)端也會(huì)顯示500的錯(cuò)誤

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

猶豫appium1.20.2版本的,不像之前的版本需要傳入的必須參數(shù)多了,現(xiàn)在只需要傳platformName即可,所以具體可以看自己安裝的是什么版本,不過(guò)加上更多參數(shù)也不受影響

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

常用的caps參數(shù):

  • platformName 平臺(tái)名稱(Android,IOS)

  • 必選deviceName 設(shè)備名稱(可選)                                                                                                 

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

  • udid (和deviceName作用一樣,在不同版本下這個(gè)參數(shù)重好用,所以以后用udid代替deviceName)

  • app apk的存放路徑(可選)

  • appActivity(頁(yè)面名稱,相當(dāng)于web頁(yè)面中title) 和 appPackage(包名)

  • platformVersion 系統(tǒng)版本號(hào)(可選,版本不匹配會(huì)報(bào)錯(cuò))

  • noReset  選擇True  不重啟(意思是app的引導(dǎo)頁(yè)面,緩存數(shù)據(jù)等不清空,如果選擇False,app相當(dāng)于重新安裝了,把之前的數(shù)據(jù)都清空了)

  • automationName 驅(qū)動(dòng)名稱

  • browserName 直接測(cè)web用Chrome

  • autoWebview 開機(jī)進(jìn)入webview模式(開機(jī)直接進(jìn)入網(wǎng)頁(yè)模式,不需要進(jìn)入原生頁(yè)面)

  • chromedriverExecutable 網(wǎng)頁(yè)瀏覽器驅(qū)動(dòng)所放路徑(必須是完整路徑)

  • chromedriverExecutableDir 網(wǎng)頁(yè)瀏覽器驅(qū)動(dòng)所放目錄

  • unicodekeyboard 開啟unicode編碼形式的鍵盤

  • resetKeyboard 重啟鍵盤 (和上一個(gè)一塊配置,兩個(gè)都設(shè)置成True,就可以開啟中文輸入,相當(dāng)于我們的電腦安裝輸入法)

  • autoGrantPermissions 開啟手機(jī)權(quán)限(相當(dāng)于web端中彈出來(lái)的alert彈框,無(wú)法定位元素,設(shè)置了True,就方便定位元素)

官網(wǎng)上還有很多用法,感興趣的可以參考一下:https://appium.io/docs/en/writing-running-appium/caps/

通過(guò)adb獲取appPackage和appActivity:

方法一:adb shell am monitor 監(jiān)控操作(在cmd中執(zhí)行此命令后,然后在手機(jī)上或模擬器上操作對(duì)應(yīng)的app,就會(huì)顯示對(duì)應(yīng)的包名)                                                                                        

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

方法二:adb logcat | findStr -i displayed 從日志進(jìn)行查詢包名和頁(yè)名稱                                                

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

 通過(guò)aapt獲取appPackage和appActivity:

aapt dump badging 全路徑.apk                                                                                               

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

 拿到appPackage和appActivity后,可以使用包名的方式來(lái)訪問(wèn)app,代碼如下:

from appium.webdriver import Remote
 
# 啟動(dòng)一次請(qǐng)求
# 1.指明需要連接的服務(wù)地址和端口號(hào)
# 2.You must include a platformName capability
caps = {"platformName": "Android",
        "udid": "emulator-5554",
        "appPackage": "com.lemon.lemonban",
        "appActivity": ".activity.WelcomeActivity"}
driver = Remote(command_executor='http://127.0.0.1:4723/wd/hub',
                desired_capabilities=caps)

 運(yùn)行結(jié)果:

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

總結(jié):

  • platformName 必填,其他可選

  • deviceName重要

  • app安裝apk包,自動(dòng)打開(已經(jīng)安裝過(guò)的不會(huì)重新安裝),apk包路徑最好不要有中文,不知道為什么我的電腦用這種方式運(yùn)行一直報(bào)錯(cuò),最后也未能解決,所以我使用包名運(yùn)行         

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

  • 在復(fù)制appActivity時(shí),注意一定是app的首頁(yè)頁(yè)面名稱,別復(fù)制錯(cuò)了

5.adb的使用

adb(Android Debug Bridge)安卓調(diào)試橋:作用就是操作安卓手機(jī)中的app

相關(guān)命令:

adb devices 查看設(shè)備是否連接(可以手動(dòng)連接 adb connect 127.0.0.1:5554,網(wǎng)上可以搜索不同模擬器的端口號(hào))

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

adb shell  登錄設(shè)備 (進(jìn)入手機(jī)系統(tǒng)里面)

adb shell dumpsys activity | find "mFocusedActivity" 查看前臺(tái)應(yīng)用activity應(yīng)用名稱(注意一定要打開了app,再去執(zhí)行命令,dumpsys下有很多命令,可以查看幫助文檔進(jìn)行更多了解)  

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

adb install 電腦/包名.apk 安裝軟件

adb uninstall  電腦/包名.apk 制裁軟件

adb pull 手機(jī)文件路徑 電腦文件路徑   從手機(jī)下載/拉文件電腦端

adb push 電腦文件路徑 手機(jī)文件路徑  從電腦推送/上傳到手機(jī)端

adb shell pm list packages 顯示所有的安裝包名

 6.Appium啟動(dòng)過(guò)程分析

客戶端通過(guò)wd/hub/session發(fā)送請(qǐng)求創(chuàng)建一個(gè)會(huì)話session                                                         

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

提供了參數(shù)就是cpas                                                                                                  

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

服務(wù)端接收到caps信息后,檢驗(yàn)caps參數(shù)是否合法                                                         

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

adb install io.setting.appium                                                                                                 

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

判斷有沒(méi)有包名                                                                                                                    

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

啟動(dòng)app                                                                                                                                      

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

獲取操作系統(tǒng)的版本: 

 adb.exe -P 5037 -s emulator-5554 shell getprop ro.build.version.release

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

判斷包名是否已經(jīng)安裝到手機(jī)上:

adb.exe -P 5037 -s emulator-5554 shell dumpsys package com.lemon.lemon

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

啟用app:

adb.exe -P 5037 -s emulator-5554 shell am start -W -n com.lemon.lemonban/.activity.WelcomeActivity -S

如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試

以上是“如何使用python+appium實(shí)現(xiàn)自動(dòng)化測(cè)試”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI