uiautomator2,一款比appium還好用的app自動化測試框架

一說到app自動化測試,第一反應就會想到appium這個框架,和web端的selenium同樣,可是對於appium來講,搭建環境很是重要,不少人都被環境搞得望而卻步了,放棄了appium。
下面說的uiautomator2這個框架,環境比appium簡單多了,能夠值得一學的
python

1.uiautomator2簡介和原理分析

uiautomator2是一個自動化測試開源工具,僅支持Android平臺的原生應用測試。它原本是Google提供的一個自動化測試的Java庫,後來發展了python-uiautomator2,封裝了谷歌自帶的uiautomator測試框架,提供便利的python接口,用它能夠很便捷的編寫python腳原本實現app的自動化測試
原理解析:
python端:運行腳本,往移動端發送HTTP請求
移動端:安裝atx-agent,而後atx-agent啓動uiautomator2服務進行監聽,並識別python腳本,轉換爲uiautomator2的代碼。
移動設備經過WIFI(同一網段)或USB接收到PC上發來的HTTP請求,執行制定的操做



android

2.安裝

1.首先跟appium同樣,要先安裝adb
下載androidsdk,並配置環境變量
web

2.安裝uiautomator2
這個很差安裝,這裏推薦用清華源或者豆瓣源來安裝
瀏覽器

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --pre -U
uiautomator2
app

3.設備初始化:首先設備鏈接到PC,並可以adb devices發現該設備
我這裏用的是夜神模擬器
在這裏插入圖片描述

框架

4.在設備上安裝atx-agent
執行 python -m uiautomator2 init
夜神模擬器就自動安裝了,手機真機可能須要點擊贊成安裝

工具

3.驗證設備是否鏈接成功

首先看設備是否鏈接上了
導包並重命名 import uiautomator2 as ut
鏈接設備是ut.connect(‘127.0.0.1:62001’)

學習

import uiautomator2 as ut
d=ut.connect('127.0.0.1:62001')
print(d.device_info)

打印出來這個設備的全部信息
在這裏插入圖片描述
這就說明鏈接是成功的
接下來須要定位元素,這裏介紹一款好用的定位工具:weditor ,不只能夠實時定位,並且還能夠在裏面編寫調試代碼


測試

4.安裝weditor

執行 pip install --pre weditor
可能會超時,這裏推薦豆瓣源安裝,親測可用
ui

pip install -i https://pypi.douban.com/simple weditor

安裝成功
在這裏插入圖片描述
執行

python -m weditor

會在瀏覽器打開一個網頁
在這裏插入圖片描述
打開以後是這樣的
在這裏插入圖片描述
在模擬器上運行app,點擊Dump Hierarchy,就能夠在瀏覽器顯示出手機的屏幕了,打開實時,能實時看到



5.打開app並編寫代碼

uiautomator2查看當前運行的app的命令是uiautomator2 current
好比我在模擬器裏打開今日頭條,在cmd裏執行uiautomator2 current
就會看到包名和當前類名
在這裏插入圖片描述
uiautomator2 打開app也比appium簡單,直接用app_start方法就好了,如今來在pycharm裏寫代碼



d=ut.connect('127.0.0.1:62001')
print(d.device_info)
d.app_start('com.ss.android.article.lite','com.ss.android.article.lite.activity.SplashActivity') #打開app

我如今要點擊到登陸頁面,在weditor裏查到元素定位,而後用d()就能夠了,比appium裏的find_element_by_xpath這種簡單
下面是我寫的代碼

import uiautomator2 as ut
import time
d=ut.connect('127.0.0.1:62001')

print(d.device_info)
d.app_start('com.ss.android.article.lite','com.ss.android.article.lite.activity.SplashActivity') #打開app
d.implicitly_wait(10)
d(text='熱榜').click()
d(text='未登陸').click()
d(text="登陸").click()
d(text="手機號").send_keys('13409012321')
d(text='請輸入驗證碼').send_keys('123456')
d(text='進入頭條').click()

uiautomator2裏還有更多好玩好用的方法,慢慢學習,會愛上這個框架的

相關文章
相關標籤/搜索