python android自动化元素定位_linux下Appium+Python移动应用自动化测试实战---3.手把手教你定位元素编写测试用例...
linux下Appium+Python移動應用自動化測試實戰—3.手把手教你定位元素編寫測試用例
前言
有很多童鞋環境搭建好了卻沒有進行下一步,是因為缺少step by step的資料。 互聯網上appium環境準備的資料多如牛毛,但是step by step操作的資料卻少了很多。春節前的最后一個工作日事情不是很多,順便把這一塊總結整理一下,分享給需要的人。
下面所有的操作都是基于你已經準備好前面描述的所有安裝部件的情況。
1. 操作前的準備
1.1 啟動appium server
命令行中直接運行appium,啟動appium服務。
appium1
出現如下圖所示的相關信息的時候,表示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/monitor1
如果沒有異常的話,會出現如下圖所示的界面。
這個時候的界面空空,什么內容都沒有。
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.calculator21
如下圖
等會兒編寫測試代碼的時候,要用到這些信息。
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
上面的腳本內容不做詳細解釋。 僅僅注意下面兩點。
(1)界面元素的定位,使用了 driver.find_element_by_id方法,ID就是上面2.1中獲取的界面元素ID。
(2)測試腳本中引用了pytest庫進行測試用例編寫。pytest庫要求每個測試用例都是以test_開頭。
2.3 執行測試用例
命令行中通過下面的命令執行測試用例。
pytest calculator.py1
運行結果如下圖。
運行過程中,你會看到模擬器的手機界面上,按照測試用例預期的順序依次點擊了各個界面元素,并且得到了預期的測試結果。
最后,附上,測試用例執行過程中,模擬器界面,以及Appium服務器上的動態效果視頻。
https://v.youku.com/v_show/id_XNTEwMTk5NDI1Mg==.html
文章來源: blog.csdn.net,作者:阿爾泰野狼,版權歸原作者所有,如需轉載,請聯系作者。
原文鏈接:blog.csdn.net/lipeixinglive/article/details/113783193
總結
以上是生活随笔為你收集整理的python android自动化元素定位_linux下Appium+Python移动应用自动化测试实战---3.手把手教你定位元素编写测试用例...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java什么是服务治理平台_Java |
- 下一篇: jspider java运行_Web S