程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

〖Python APP 自動化測試實戰篇④〗- 通過 appoum 驅動夜神模擬器完成第一個自動化腳本 - 查看通訊錄

編輯:Python
萬葉集 隱約雷鳴,陰霾天空。 但盼風雨來,能留你在此。


前言
作者簡介:渴望力量的哈士奇 ,大家可以叫我 哈士奇 ,一位致力於 TFS - 全棧 賦能的博主
CSDN博客專家認證、新星計劃第三季全棧賽道 top_1 、華為雲享專家、阿裡雲專家博主
如果文章知識點有錯誤的地方,請指正!和大家一起學習,一起進步
人生格言:優於別人,並不高貴,真正的高貴應該是優於過去的自己。
如果感覺博主的文章還不錯的話,還請關注、點贊、收藏三連支持一下博主哦


專欄系列(點擊解鎖)學習路線指引知識定位Python全棧白皮書 零基礎入門篇 以淺顯易懂的方式輕松入門,讓你徹底愛上Python的魅力。 語法進階篇 主要圍繞多線程編程、正則表達式學習、含貼近實戰的項目練習 。 自動化辦公篇 實現日常辦公軟件的自動化操作,節省時間、提高辦公效率。 自動化測試實戰篇 從實戰的角度出發,先人一步,快速轉型測試開發工程師。 數據庫開發實戰篇更新中 爬蟲入門與實戰更新中數據分析篇更新中前端入門+flask 全棧篇更新中django+vue全棧篇更新中拓展-人工智能入門更新中網絡安全之路 踩坑篇 記錄學習及演練過程中遇到的坑,便於後來居上者 網安知識掃盲篇 三天打魚,不深入了解原理,只會讓你成為腳本小子。 vulhub靶場漏洞復現 讓漏洞復現變得簡單,讓安全研究者更加專注於漏洞原理本身。 shell編程篇 不涉及linux基礎,最終案例會偏向於安全加固方向。 [待完結] WEB漏洞攻防篇2021年9月3日停止更新,轉戰先知社區等安全社區及小密圈 滲透工具使用集錦2021年9月3日停止更新,轉戰先知社區等安全社區及小密圈點點點工程師 測試神器 - Charles 軟件測試數據包抓包分析神器 測試神器 - Fiddler 一文學會 fiddle ,學不會倒立吃翔,稀得! 測試神器 - Jmeter 不僅是性能測試神器,更可用於搭建輕量級接口自動化測試框架。 RobotFrameWorkPython實現的自動化測試利器,該篇章僅介紹UI自動化部分。 Java實現UI自動化文檔寫於2016年,Java實現的UI自動化,仍有借鑒意義。 MonkeyRunner該工具目前的應用場景已不多,文檔已刪,為了排版好看才留著。


文章目錄

    • 使用模擬器的前置操作
    • 編寫腳本 - 自動查看通訊錄

接下來我們通過一個簡單的例子一起來看一看如何通過 appium 這養一個工具、框架實現操作手機app,使用的例子也非常的簡單,就是訪問查看通訊錄。

後續我們將使用安卓模擬器進行演示的交互,模擬器為 “夜神模擬器”。其實這是一款游戲模擬器,但是它的兼容性與使用起來都非常的方便,所以我們的APP自動化測試領域經常采用它。(除了夜神這款模擬器之外,比較知名的還有逍遙、雷電、MuMu模擬器等)

夜神模擬器的安裝直接訪問官網 www.yeshen.com 下載安裝即可。

使用模擬器的前置操作

在我們配置好 appium 的環境、安裝好 “夜神模擬器” 之後,還需要進行一步操作。這就是將 “夜神模擬器” 自身的 adb 替換成 我們安裝的 Android SDK 的 adb 。

這是因為 模擬器的 adb 的版本比 Android SDK 的 adb 要低,這種情況下就會導致服務沒有辦法啟動,所以需要替換掉。(如果是 windows 系統的話,還需要將復制過來的 adb.exe 改成 nox_adb.exe ,具體視實際情況而定。)

如此就能夠保證兩個 adb 的版本是完全一致的。

夜神模擬器的路徑為 /Applications/NoxAppPlayer.app/Contents/MacOS



然後利用進入夜神模擬器的路徑,利用 adb 鏈接當前的夜神模擬器。

  • 執行命令:adb connect 127.0.0.1:62001 ;夜神模擬器的默認端口是 62001;當出現 connected to 127.0.0.1:62001 則表示已連接到設備。
  • 執行命令:adb devices ;如果出現 127.0.0.1:62001 device 則代表當前的 adb 鏈接已經大功告成。


編寫腳本 - 自動查看通訊錄

編寫腳本之前,確保我們已經安裝了 appium-python-client 模塊,在我們搭建 APPIUM 環境的時候其實已經安裝了這個模塊。

# coding=utf-8
from time import sleep
from appium import webdriver # appium 的特色就是將安卓、IOS的底層封裝成了 webdriver 類型的語句
# from appium.webdriver.common import appiumby
''' 區別於WEB自動化,APP自動化需要有一個設備的概念; 所謂的設備概念,就是啟動的參數 '''
# 啟動參數
desired_caps = {
} # 定義 desired_caps 變量,用以賦值很多的啟動信息
desired_caps['platformName'] = 'Android' # 設備名稱、系統為 "Android"
desired_caps['platformVersion'] = '7.1.2' # 這裡是在夜神模擬器的設置中心查看安卓版本是 "7.1.2" ,後續會告訴大家如何切換版本
desired_caps['deviceName'] = '127.0.0.1::62001' # 這裡如果是真機的話填寫的是設備名稱;因為我們用的是模擬器,填寫的是IP端口號
desired_caps['appPackage'] = 'com.android.contacts' # APP 的包名;這裡我們使用的是通訊錄
desired_caps['appActivity'] = '.activities.PeopleActivity' # 啟動的界面的名字(也或者叫啟動名,默認是 "." 開頭的)
desired_caps['automationName']='UiAutomator1'
# 聲明手機驅動
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 注冊到這個節點上,傳入 "desired_caps"。這個節點就是 "appium" 開啟的端口節點
# 定位到要操作的聯系人
driver.find_element_by_id('com.android.contacts:id/cliv_name_textview').click() # 這裡問了演示效果,先寫上。後續會告訴大家如何定位這個id
sleep(3)
driver.quit()

運行結果如下:



關於這個腳本中的詳細的 appium Capability 屬性,會在下一章節進行詳細的講解,這一章節主要是給大家演示一下 appium 的自動化的效果。




  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved