python+appium自動化測試之如何控制App的啟動和退出
由于本人使用的是Android設(shè)備做自動化測試,所以以下內(nèi)容均基于Android系統(tǒng)做出的整理
一、啟動app
啟動app需要設(shè)置Capability參數(shù),而Capability參數(shù)放在Desired Capalibity中,Desired Capalibity告訴Appium想要的自動化平臺和應(yīng)用程序,這是一組鍵值對,主要是用于通知Appium服務(wù)器建立需要的session
設(shè)置Capability的公共部分
platformName 自動化測試手機(jī)的操作系統(tǒng)(Android/iOS)
platformVersion 手機(jī)對應(yīng)的版本(Android 10)
deviceName 連接的設(shè)備名(模擬器或真機(jī))
設(shè)置Capability 的Android部分
appActivity 通過APK包獲取,獲取方式在下方有說明
appPackage 通過APK包獲取包名,獲取方式在下方有說明
Android完整案例:
def start(self):
caps = {"platformName": "Android",
"deviceName": "U4AIUKFAL7W4MJLR",
"platforVersion": "9",
"appPackage": "com.sina.weibo",
"appActivity": "com.sina.weibo.SplashActivity",
"autoGrantPermissions": "true",
"automationName": "UiAutomator2"
}
self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
1.plateforName的作用?
操作系統(tǒng),例如:Android、iOS、FirefoxOS
2.deviceName的作用是什么?(獲取設(shè)備名的方式在下面內(nèi)容)
設(shè)備名,連接的設(shè)備名(真機(jī)或模擬器)
3.platforVersion的作用是什么?
操作系統(tǒng)版本,對應(yīng)連接的模擬器或手機(jī)的系統(tǒng)版本
4.appActivity和appPackage的作用是什么?(獲取的方式在下面內(nèi)容)
使Appium確切知道應(yīng)為您的應(yīng)用程序啟動哪個程序包和活動。否則,Appium會嘗試從您的應(yīng)用清單中自動確定這些內(nèi)容。
5.autoGrantPermissions的作用是什么?
讓appium自動授權(quán)app權(quán)限,如果noReset為True,則該條不生效(該參數(shù)為Android獨有),對應(yīng)的值為True或False
6.automationName的作用是什么?
使用引擎,默認(rèn)為Appium,其中Appium、UiAutomator2、Selendroid、Espresso用于Android,XCUITest用于iOS
7.webdriver.Remote("http://localhost:4723/wd/hub", caps)的作用是什么?
webdriver.Remote實際上就是原生webdriver的子類,另外Remote()構(gòu)造函數(shù)的第一個參數(shù)中需要顯示指定appium server監(jiān)聽的端口
二、退出App
def teardown(self): driver.quit()
三、appium實現(xiàn)原理
客戶端(即PC端)通過4723端口,向服務(wù)端(server)發(fā)送代碼請求,服務(wù)端與移動端(設(shè)備:手機(jī)或模擬器)通過4724端口進(jìn)行通信,當(dāng)服務(wù)端接收到請求后,移動端的Bootstrap.jar包,將命令傳送給Uiautomator執(zhí)行點擊、滑動的操作。
Bootstrap的作用:啟動socket通信,監(jiān)聽4724端口
如下圖所示:

appium只是一個框架,調(diào)用的自動化框架是Android或iOS本身的框架,默認(rèn)端口號是4723,本地的IP地址是:http://127.0.0.1,或http://locahost
四、如何獲取deviceName?
移動端在“手機(jī)->設(shè)置->開發(fā)者選項”中打開USB調(diào)試,PC端按下【W(wǎng)indows+R】,輸入cmd,運(yùn)行cmd,輸入adb devices,如下圖所示:

圖中的device前面的參數(shù)即表示設(shè)備名:U4AIUKFAL7W4MJR
五、如何獲取apk的appActivity和appPackage?
1、在Android SDK的文件夾下找到aapt.exe應(yīng)用程序,在"D:\Android\SDK\build-tools\30.0.1"路徑下,如下圖所示:

2、按下【W(wǎng)indows+R】,輸入cmd,運(yùn)行cmd ,進(jìn)入該盤,再進(jìn)入appt.exe所在的文件夾,輸入的內(nèi)容為:“cd D:\Android\SDK\build-tools\30.0.1”,則可以進(jìn)入該文件夾,進(jìn)入文件夾后輸入“aapt dump badging apk所在的路徑+apk名字”,如下圖所示即為成功,下圖所示為獲取到的app的appPackage

下圖所示為獲取到的app的appActivity

到此這篇關(guān)于python+appium自動化測試之如何控制App的啟動和退出的文章就介紹到這了,更多相關(guān)python appium App的啟動和退出內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Python實現(xiàn)監(jiān)聽html點擊事件教程
在Web開發(fā)中,經(jīng)常需要在用戶與頁面交互時執(zhí)行一些操作,本文將介紹如何使用Python來監(jiān)聽HTML點擊事件,有需要的小伙伴可以跟隨小編一起了解下2024-04-04
Python如何通過ARIMA模型進(jìn)行時間序列分析預(yù)測
這篇文章主要介紹了Python如何通過ARIMA模型進(jìn)行時間序列分析預(yù)測問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
python polars數(shù)據(jù)科學(xué)庫對比Pandas優(yōu)勢分析
這篇文章主要為大家介紹了python polars數(shù)據(jù)科學(xué)庫對比Pandas優(yōu)勢分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
解決Python出現(xiàn)_warn_unsafe_extraction問題的方法
這篇文章主要為大家詳細(xì)介紹了解決Python出現(xiàn)'_warn_unsafe_extraction'問題的方法,感興趣的小伙伴們可以參考一下2016-03-03
教你使用Python的pygame模塊實現(xiàn)拼圖游戲
pygame模塊是一個可以跨平臺的模塊,其設(shè)計目的就是為電子游戲而設(shè)計,能夠支持圖片和聲音,下面這篇文章主要給給大家介紹了關(guān)于使用Python的pygame模塊實現(xiàn)拼圖游戲的相關(guān)資料,需要的朋友可以參考下2022-07-07
python代碼打印100-999之間的回文數(shù)示例
今天小編就為大家分享一篇python代碼打印100-999之間的回文數(shù)示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11

