簡介
? “千呼萬喚始出來,猶抱琵琶半遮面”,經過前邊的各項準備工作,終于才把appium這位琵琶女請出來。那么下邊就由宏哥給各位看官、小伙伴們和童鞋們來引薦這位美女(帥哥)。這一篇主要是對前邊的內容做一個小小的總結,我們不能只顧得埋頭拉車,不記得抬頭看路可不行哦!
說明:Appium--奴家的大號,提起奴家的大號在江湖上也是無人不知,無人不曉。奴家==Appium;
一、奴家自我介紹 ?? ?
? ? ? ?奴家是一款開源的自動化測試工具,奴家可以支持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都有不同的運行、和交互方式。所以奴家會用某個樁程序“侵入”該平臺,并接受指令,來完成測試用例的運行(曲譜的彈奏)。
琵琶女: 下面奴家把時間交還給宏哥,讓宏哥繼續來引薦奴家。
宏哥: 好了各位看官、小伙伴們和童鞋們不要再盯著美女了,把頭往宏哥這邊轉一轉,把目光往宏哥這邊匯聚一下。
宏哥: 哎哎哎,說你了,把頭轉到宏哥這邊,聽宏哥給您慢慢道來,哎哎哎,對!不要看別人說的就是你。
宏哥: 好了,你們都這樣,宏哥就不廢話了,還是把頭轉回去。直接開始正題,進行移動端自動化測試實戰(琵琶彈奏-十面埋伏)
二、奴家實戰技藝(以真機<琵琶>為例)
各位看官這里是給大家列舉的一些琵琶女的指法(命令)
?????? 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()
?
三、以淘寶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()
?
至此運行腳本即可進行自動化測試。(琵琶女彈奏結束,響起來雷鳴般的掌聲,琵琶女雙手抱拳,豪氣十足退出舞臺)
?
小結
1、adb.exe connect 127.0.0.1:62001和nox_adb.exe connect 127.0.0.1:62001的效果是一樣的,前提就是你已經配置好系統變量和解決了版本沖突。
2、好了有關appium的總結就到這里了,欲知后事如何,且聽下回分解。嘿嘿?。。?
?
宏哥不能保證所整理都符合大家的口味,但我能保證每一篇都是用心去寫和用心去整理,我始終認同“分享的越多,你的價值增值越大”,歡迎大家關注我的博客和個人公眾號的技術分享。在分享中進步,越努力越幸運,期待我們都有美好的明天!
支持宏哥的朋友們和宏哥的宏粉記得點波推薦哦,您的肯定就是我進步的動力。鄙人先在這里給您道謝了,謝您嘞~~
個人公眾號(因為許多文章都被搬到別人的公眾號里了,還是原創,所以宏哥果斷也開一個公眾號。打算與博客園文章同步,希望大家隨時隨地學習與進步):
微信群(因為有人給我發短消息說公司不讓用QQ,就幫忙建立一個微信群,歡迎加入討論和交流)
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
