linux下Appium+Python移動應用自動化測驗實戰—3.手把手教你定位元素撰寫測驗用例
文章目錄
- linux下Appium+Python移動應用自動化測驗實戰---3.手把手教你定位元素撰寫測驗用例
- 前言
- 1. 操作前的準備
- 1.1 啟動appium server
- 1.2 啟動DDMS(Android Monitor)
- 1.3 啟動Android模擬器
- 1.4 運行被測驗APP
- 1.4 獲取App的包資訊
- 2. 獲取界面元素并撰寫測驗用例
- 2.1 獲取界面元素
- 2.2 撰寫測驗用例腳本
- 2.3 執行測驗用例
前言
有很多童鞋環境搭建好了卻沒有進行下一步,是因為缺少step by step的資料, 互聯網上appium環境準備的資料多如牛毛,但是step by step操作的資料卻少了很多,春節前的最后一個作業日事情不是很多,順便把這一塊總結整理一下,分享給需要的人,
下面所有的操作都是基于你已經準備好前面描述的所有安裝部件的情況,
1. 操作前的準備
1.1 啟動appium server
命令列中直接運行appium,啟動appium服務,
appium
出現如下圖所示的相關資訊的時候,表示appium server已經成功啟動,

1.2 啟動DDMS(Android Monitor)
在 A N D R O I D S D K H O M E / t o o l s 目 錄 下 , 運 行 m o n i t o r , 或 者 在 你 正 確 設 置 了 A n d r o i d S D K 環 境 變 量 并 生 效 的 情 況 下 , 在 任 意 個 命 令 行 或 者 目 錄 下 , 直 接 執 行 {ANDROID_SDK_HOME}/tools目錄下,運行monitor, 或者在你正確設定了Android SDK環境變數并生效的情況下,在任意個命令列或者目錄下,直接執行 ANDROIDS?DKH?OME/tools目錄下,運行monitor,或者在你正確設置了AndroidSDK環境變量并生效的情況下,在任意個命令行或者目錄下,直接執行{ANDROID_SDK_HOME}/tools/monitor命令即可,
${ANDROID_SDK_HOME}/tools/monitor
如果沒有例外的話,會出現如下圖所示的界面,

這個時候的界面空空,什么內容都沒有,
1.3 啟動Android模擬器
運行android studio,依次進入“Configure/AVD Manager”,運行已經配置好的Android模擬器,

這里執行速度視機器性能而定,Android模擬器啟動完成以后,回到Android Monitor, 這時候發現左邊的devices串列中多了一個Android 模擬器,狀態是Online,如下圖,

這里要多啰嗦幾句,一定要先啟動Android Monitor,再啟動Android模擬器,否則會出現Android模擬器狀態一直是offline的情況,這里我沒有深究具體原因,但是在我的linux系統下,如果先啟動模擬器再啟動monitor的話,這個問題必然出現,
1.4 運行被測驗APP
這里以Android模擬器自帶的計算機為例子進行講解,
在Android模擬器上運行Calculator程式,只要進入主界面就可以了,如下圖所示,

在Android Monitor界面,選中devices串列中的模擬器,然后點擊中間那個小手機圖示(Dump View Jierarchy for UI Automator),如下圖,

資訊加載完成以后,模擬器上運行的計算器程式界面展示在了Monitor中,如下圖,

從上圖中可以看出計算器APP的包名是com.android.calculator2,
1.4 獲取App的包資訊
命令列中運行adb shell dumpsys package YOUR_PACKAGE_NAME即可獲取對應的包資訊,
adb shell dumpsys package com.android.calculator2
如下圖

等會兒撰寫測驗代碼的時候,要用到這些資訊,
2. 獲取界面元素并撰寫測驗用例
2.1 獲取界面元素
在Android Monitor上面,每點選一個界面元素,右邊就會顯示對應的控制元件的ID,可以直接拷貝控制元件ID用于在測驗用例中識別界面元素,如下圖,

2.2 撰寫測驗用例腳本
創建一個名稱為Calculator.py的python腳本,內容如下,
#!/usr/bin/python3
import selenium
import time
import pytest
from appium import webdriver
my_dc = dict()
my_dc['platformName'] = 'Android' #平臺為Android
my_dc['platformVersion'] = '7.1.1' #平臺版本為7.1.1
my_dc['deviceName'] = 'Android_SDK_built_for_x86 device' # 取一個機器名字
my_dc['appPackage'] = 'com.android.calculator2' # 被測驗App的包名
my_dc['appActivity'] = '.Calculator' # 被測驗App的主Activity
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", my_dc) # 鏈接Appium服務器創建webdriver實體
###下面的測驗用例定義的時候,一定要以test開頭,否則pytest不認為是測驗用例,
# 計算器 加法測驗用例
def test_addition():
driver.find_element_by_id("com.android.calculator2:id/digit_3").click() #點擊3
driver.find_element_by_id("com.android.calculator2:id/op_add").click() #點擊+
driver.find_element_by_id("com.android.calculator2:id/digit_7").click() #點擊7
driver.find_element_by_id("com.android.calculator2:id/eq").click() #點擊=
result = driver.find_element_by_id("com.android.calculator2:id/result").text #獲取計算結果并賦值給變數result
assert result == "10" #計算結果跟預期結果相符
# 計算器 減法測驗用例
def test_subtraction():
driver.find_element_by_id("com.android.calculator2:id/digit_9").click()
driver.find_element_by_id("com.android.calculator2:id/op_sub").click()
driver.find_element_by_id("com.android.calculator2:id/digit_7").click()
driver.find_element_by_id("com.android.calculator2:id/eq").click()
result = driver.find_element_by_id("com.android.calculator2:id/result").text
assert result == "2"
# 計算器 乘法測驗用例
def test_multiplication():
driver.find_element_by_id("com.android.calculator2:id/digit_9").click()
driver.find_element_by_id("com.android.calculator2:id/op_mul").click()
driver.find_element_by_id("com.android.calculator2:id/digit_7").click()
driver.find_element_by_id("com.android.calculator2:id/eq").click()
result = driver.find_element_by_id("com.android.calculator2:id/result").text
assert result == "63"
# 計算器 除法測驗用例
def test_divition():
driver.find_element_by_id("com.android.calculator2:id/digit_9").click()
driver.find_element_by_id("com.android.calculator2:id/op_div").click()
driver.find_element_by_id("com.android.calculator2:id/digit_3").click()
driver.find_element_by_id("com.android.calculator2:id/eq").click()
result = driver.find_element_by_id("com.android.calculator2:id/result").text
assert result == "3"
上面的腳本內容不做詳細解釋, 僅僅注意下面兩點,
(1)界面元素的定位,使用了 driver.find_element_by_id方法,ID就是上面2.1中獲取的界面元素ID,
(2)測驗腳本中參考了pytest庫進行測驗用例撰寫,pytest庫要求每個測驗用例都是以test_開頭,
2.3 執行測驗用例
命令列中通過下面的命令執行測驗用例,
pytest calculator.py
運行結果如下圖,

運行程序中,你會看到模擬器的手機界面上,按照測驗用例預期的順序依次點擊了各個界面元素,并且得到了預期的測驗結果,
最后,附上,測驗用例執行程序中,模擬器界面,以及Appium服務器上的動態效果視頻,
https://v.youku.com/v_show/id_XNTEwMTk5NDI1Mg==.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/258755.html
標籤:其他
上一篇:點亮2021@微信官方 給一個福字 是怎么弄的?附小白教程
下一篇:前端MUI+H5+HBuilderX開發APP(IOS,android),后臺Springboot,java學習與實踐文章,更新中(一)
