🔥Appium+python 自動化(七)- 初識琵琶女 Appium(千呼萬喚始出來,猶抱琵琶半遮面)- 上(超詳解)
1.簡介
“千呼萬喚始出來,猶抱琵琶半遮面”,經過前邊的各項準備工作,終於才把 appium 這位琵琶女請出來。那麼下邊就由宏哥給各位看官、小夥伴們和童鞋們來引薦這位美女(帥哥)。這一篇主要是對前邊的內容做一個小小的總結,我們不能只顧得埋頭拉車,不記得抬頭看路可不行哦!
說明:Appium--奴家的大號,提起奴家的大號在江湖上也是無人不知,無人不曉。奴家==Appium;
*2.奴家自我介紹 *
奴家是一款開源的自動化測試工具,奴家可以支援iOS和安卓平臺上的原生的,基於移動瀏覽器的,混合的應用(APP)。
1、 請奴家來進行彈奏的好處(使用 appium 進行自動化測試的好處)
奴家在不同平臺中使用了標準的自動化APIs,所以在跨平臺時,不需要重新編譯或者修改自己的應用。
奴家支援Selenium WebDriver支援的所有語言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl語言,更可以使用Selenium WebDriver的Api。Appium支援任何一種測試框架.Appium實現了真正的跨平臺自動化測試。(本文主要介紹Python的用法)
2、奴家的五臟六腑(Appium 架構)
奴家是一個用Node.js編寫的HTTP server,它建立、並管理多個 WebDriver sessions 來和不同平臺互動,如 iOS ,Android等等.
奴家開始一個測試(一曲彈奏)後,就會在被測裝置--琵琶(手機)上啟動一個 server ,監聽來自 Appium server(看官、觀眾)的指令. 每種平臺像 iOS 和Android都有不同的執行、和互動方式。所以奴家會用某個樁程式“侵入”該平臺,並接受指令,來完成測試用例的執行(曲譜的彈奏)。
琵琶女: 下面奴家把時間交還給宏哥,讓宏哥繼續來引薦奴家。
宏哥:好了各位看官、小夥伴們和童鞋們不要再盯著美女了,把頭往宏哥這邊轉一轉,把目光往宏哥這邊匯聚一下。
宏哥:哎哎哎,說你了,把頭轉到宏哥這邊,聽宏哥給您慢慢道來,哎哎哎,對!不要看別人說的就是你。
宏哥:好了,你們都這樣,宏哥就不廢話了,還是把頭轉回去。直接開始正題,進行移動端自動化測試實戰(琵琶彈奏 - 十面埋伏)
3.奴家實戰技藝(以真機<琵琶>為例)
各位看官這裡是給大家列舉的一些琵琶女的指法(命令)
aapt dump badging D:\XXX.apk 獲取安裝包的所有資訊
adb devices(檢視手機是否連線到電腦)
adb shell pm list packages:列出所有的包名,找到所檢視包的包名。
adb shell dumpsys package com.android.XXX:檢視某個包的具體資訊
其它:
adb devices:檢視Android裝置是否連線到電腦。
adb shell dumpsys activity:檢視當前執行的是哪個activity,執行的一些程序等
adb shell dumpsys activity activities
adb shell pm list packages:列出所有的包名。
adb shell dumpsys package:列出所有的安裝應用的資訊
adb shell dumpsys package com.android.XXX:檢視某個包的具體資訊
adb shell dumpsys activity | grep mFocusedActivity:檢視當前resume的是哪個activity
adb logcat | grep ActivityManager:檢視當前正在執行的Activity
adb logcat | grep Displayed:檢視當前正在執行的Activity
1、 連線真機或者模擬器 -- 這裡是琵琶女手指和琵琶如何接觸連線
1)連線手機時注意選擇手機的開發者模式,cmd 開啟命令列視窗,輸入 adb devices 獲取到裝置的 deviceName。
2)啟動模擬器,連線模擬器 AVD(Google 自帶),cmd 開啟命令列視窗,輸入 adb devices 獲取到裝置的 deviceName
3)啟動模擬器,連線夜神模擬器,要注意先輸入 nox_adb.exe connect 127.0.0.1:62001(相當於插入資料線),再繼續,輸入 adb devices
2、獲取 Activity(獲取曲譜中曲調,就和我們現在音樂中的 “到瑞秘法掃垃圾” 差不多)
1)cmd 開啟命令列視窗,輸入 aapt dump badging D:\XXX.apk(xxx 指安裝包名,D:\是指路徑)直接檢視需要測試 app 安裝包的具體資訊。
2)標記的就是包名,繼續往下拖拽,可以找到 activity 的資訊。
這裡的紅圈就可以看到activity的資訊。這兩個值,在appium指令碼中都需要提前獲取到,所以需要提前介紹這個獲取方法。如果你覺得在cmd裡面不好看,你可以把cmd資訊匯出到一個txt檔案,例如 aapt dump badging shoujibaidu.apk > 123.txt 回車後,會在桌面生成一個123.txt檔案,你可以開啟,透過查詢找到這些資訊。透過上面的方法,只要我們有android SDK環境,那麼我們就可以獲取到任意一個包的包名和Activity資訊。
3、啟動 Appium
1) 雙擊桌面上的appium圖示開啟,點選Android Settings進行設定。
2)將上方獲取到的真機的 deviceName 填入 ,選擇 platformName 和 platformVersion
3)將服務的 session 配置成可重寫(非必要的配置)
4)配置好後,點選右上角的啟動按鈕進行啟動即可。
5)啟動成功,下一步該寫程式碼了。
4、將上方得到的裝置和安裝包資訊寫入指令碼中
1 # coding=utf-8
2 # 1.先設定編碼,utf-8可支援中英文,如上,一般放在第一行
3
4 # 2.註釋:包括記錄建立時間,建立人,專案名稱。
5 '''
6 Created on 2019-6-19
7 @author: 北京-宏哥 QQ交流群:707699217
8 Project:初始琵琶女appium
9 '''
10 # 3.匯入模組
11 from appium import webdriver
12 import time
13 desired_caps = {}
14 desired_caps['platformName'] = 'Android' #android的apk還是IOS的ipa
15 desired_caps['platformVersion'] = '8.0' #android系統的版本號
16 desired_caps['deviceName'] = 'emulator-5554' #手機裝置名稱,透過adb devices 檢視
17 desired_caps['appPackage'] = 'com.taobao.taobao' #apk的包名
18 desired_caps['appActivity'] = 'com.taobao.tao.welcome.Welcome' #apk的launcherActivity
19 # desired_caps['unicodeKeyboard'] = True #使用unicodeKeyboard的編碼方式來傳送字串
20 # desired_caps['resetKeyboard'] = True #將鍵盤給隱藏起來
5、查詢 app 定位元素
1)啟動 Android SDK 中的一個神器可以查詢 app 的定位元素進行指令碼的編寫。在 Android SDK 中的 tools 中有一個 uiautomatorviewer.bat,如下圖所示:
2)點選 uiautomatorviewer.bat 進行啟動,左上角一共四個按鈕,作用分別是開啟本地檔案(open)、Device Screenshot (uiautomator dump) dump 頁面、dump 壓縮格式的頁面、儲存;啟動後點選左上角第三個圖示進行真機介面的呈現。
3) 選擇裝置模擬器或者真機
4)第一次連線會比較慢,耐心等候一下,連線好後以後就快了。我這裡以百度介面為例。
這是連線夜神模擬器後的介面顯示。這樣就可以根據 id、class、text 等定位元素進行定位了。
1 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
2 driver.find_element_by_id("index-kw").click()
3 driver.find_element_by_id("index-kw").clear()
4 driver.find_element_by_id("index-kw").send_keys('appium測試')
5
6 7 driver.find_element_by_id("index-bn").click()
8
9 driver.quit()
4.以淘寶 APP 為例項
1、例項程式碼
2、程式碼執行結果
3、appium 執行結果
4、模擬器執行結果
5、參考程式碼
1 # coding=utf-8
2 # 1.先設定編碼,utf-8可支援中英文,如上,一般放在第一行
3
4 # 2.註釋:包括記錄建立時間,建立人,專案名稱。
5 '''
6 Created on 2019-6-19
7 @author: 北京-宏哥 QQ交流群:707699217
8 Project:學習和使用python程式碼appium+pycharm+連線夜神模擬器
9 '''
10 # 3.匯入模組
11 from appium import webdriver
12 import time
13 desired_caps = {}
14 desired_caps['platformName'] = 'Android' #android的apk還是IOS的ipa
15 desired_caps['platformVersion'] = '8.0' #android系統的版本號
16 desired_caps['deviceName'] = '127.0.0.1:62001' #手機裝置名稱,透過adb devices 檢視
17 desired_caps['appPackage'] = 'com.taobao.taobao' #apk的包名
18 desired_caps['appActivity'] = 'com.taobao.tao.welcome.Welcome' #apk的launcherActivity
19 #desired_caps['unicodeKeyboard'] = True #使用unicodeKeyboard的編碼方式來傳送字串
20 #desired_caps['resetKeyboard'] = True #將鍵盤給隱藏起來
21 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) #啟動伺服器地址,後面跟的是手機資訊
22 # 休眠五秒等待頁面載入完成
23 time.sleep(5)
24
25 driver.find_element_by_id("com.taobao.taobao:id/home_searchedit").click()
26 time.sleep(4)
27 driver.find_element_by_id("com.taobao.taobao:id/searchEdit").clear()
28 time.sleep(3)
29 driver.find_element_by_id("com.taobao.taobao:id/searchEdit").send_keys("琵琶")
30 time.sleep(2)
31 driver.find_element_by_id("com.taobao.taobao:id/searchbtn").click()
32
33 # driver.quit()
至此執行指令碼即可進行自動化測試。(琵琶女彈奏結束,響起來雷鳴般的掌聲,琵琶女雙手抱拳,豪氣十足退出舞臺)
5.小結
1、adb.exe connect 127.0.0.1:62001 和 nox_adb.exe connect 127.0.0.1:62001 的效果是一樣的,前提就是你已經配置好系統變數和解決了版本衝突。
2、好了有關 appium 的總結就到這裡了,欲知後事如何,且聽下回分解。嘿嘿!!!
相關文章
- 🔥Appium+python 自動化(三)- SDK Manager(超詳解)APPPython
- 🔥Appium+python 自動化(五)- 模擬器(超詳解)APPPython
- 🔥Appium+python 自動化(二)- 環境搭建—下(超詳解)APPPython
- 千呼萬喚始出來——DataV私有部署功能
- Appium+python自動化(一)- 環境搭建—上(超詳解)APPPython
- 千呼萬喚始出來 JDK 21 LTS, 久等了JDK
- 🔥Appium+python 自動化(六)- 連線模擬器並啟動淘寶 APP(超詳解)APPPython
- 千呼萬喚始出來-TestFlight public link功能正式釋出了!
- 🔥Appium+python 自動化(四)- 如何檢視程式所佔埠號和 IP(超詳解)(番外篇)APPPython
- Appium+python自動化(十二)- Android UIAutomator終極定位凶器(超詳解)APPPythonAndroidUI
- Appium+python自動化(十五)- Android 這些基礎知識,你知多少???(超詳解)APPPythonAndroid
- Appium+python自動化(十三)- 與Capability完美懈垢之解讀(超詳解)APPPython
- 千呼萬喚始出來《影之刃3》全平臺公測下週來襲!
- Appium+python自動化(十三)- 輸入中文 - 一次填坑記(超詳解)APPPython
- 千呼萬喚使出來,goal 資料庫元件終於出爐啦Go資料庫元件
- Appium+python自動化(四)- 如何檢視程式所佔埠號和IP(超詳解)(番外篇)APPPython
- 搭建appium+python自動化測試環境APPPython
- Appium+python自動化54-appium-doctor報錯已解決(SyntaxError: Unexpected token ...)APPPythonError
- 千呼萬喚,web人臉識別登入完整版來了,這樣式我愛了Web
- 千呼萬喚「駛」出來!小批次Robotaxi長沙到貨,成星城最靚風景線
- Appium+Python實現iOS自動化測試~環境搭建APPPythoniOS
- Appium+python自動化(二十二)- 三個臭皮匠頂個諸葛亮-控制元件座標獲取(超詳解)APPPython控制元件
- python介面自動化(三十九)- logger 日誌 - 上(超詳解)Python
- appium自動化APP
- Appium自動化(10) - appium高階元素定位方式之 UI Automator API 的詳解APPUIAPI
- 自動化之旅--AppiumAPP
- 【python介面自動化】初識unittest框架Python框架
- Android + Appium 自動化測試完整的環境配置及程式碼詳解AndroidAPP
- python介面自動化(四十)- logger 日誌 - 下(超詳解)Python
- Java併發程式設計之美-千無萬喚使出來Java程式設計
- 3分鐘瞭解Appium:使用appium做Android手機自動化測試!APPAndroid
- Appium自動化(9) - appium元素定位的快速入門APP
- Ansible自動化配置詳解
- Appium自動化(15) - 針對 webview 進行自動化測試APPWebView
- ios+appium 自動化 click 無效iOSAPP
- java+appium 自動化環境搭建JavaAPP
- APPIUM-Android自動化元素定位方式APPAndroid
- 🔥httpsok-v1.13.0支援七牛雲證書自動部署HTTP
- Appium自動化(7) - 控制元件定位工具之Appium 的 InspectorAPP控制元件