Appium+python自動化(九)- 定位元素工具

?

簡介

?  環境搭建好了,其他方面的知識也準備的差不多了,那么就開始下一步元素定位,元素定位主要介紹如何使用uiautomatorviewer,通過定位到頁面上的元素,然后進行相應的點擊等操作. 此外在介紹另一款工具:Inspector。

uiautomatorviewer是android-sdk自帶的一個元素定位工具,非常簡單好用,使用uiautomatorviewer,你可以檢查一個應用的UI來查看應用的布局和組件以及相關的屬性。

  那么先來介紹--uiautomatorviewer,再介紹--Inspector。

一、uiautomatorviewer

  簡介:

  Android 4.1發布的,uiautomator是用來做UI測試的。也就是普通的手工測試,點擊每個控件元素 看看輸出的結果是否符合預期。比如 登陸界面 分別輸入正確和錯誤的用戶名密碼然后點擊登陸按鈕看看是否能否登陸以及是否有錯誤提示等。

功能性或者黑盒UI測試不需要測試人員了解程序如何實現的,只需要驗證各種操作的結果是否符合預期即可。這樣的測試可以分離團隊的開發人員和測試人員。大家各干各的沒有太多的交集。

  常用的UI測試方式就是人工驗證啦,就是測試人員拿著各種手機分別安裝要測試的程序然后看看是否能正確完成各種預定的功能。但是這種驗證方式是非常耗時間的,每次回歸都要全部驗證一邊,并且還容易出現人為錯誤。比較高效和可靠的UI測試方式就是自動化測試。自動化UI測試創建測試代碼來執行測試任務,各種測試任務分別覆蓋不同的使用場景,然后使用測試框架來運行這些測試任務。而uiautomator 就是你的自動化UI測試工具。

Android SDK在4.1中提供了如下工具來支持UI自動化測試:

  • uiautomatorviewer – 一個圖形界面工具來掃描和分析應用的UI控件。

  • uiautomator – 一個測試的Java庫,包含了創建UI測試的各種API和執行自動化測試的引擎。

要大哥出山也就是使用該工具,需要滿足如下條件:

  • Android SDK Tools, Revision 21 or higher

  • Android SDK Platform, API 16 or higher

一、啟動uiautomatorviewer.bat

兩種啟動方法:

第一種方法:

1、打開目錄D:\software\android-sdk-windows\tools

2、雙擊啟動,啟動之后出現如下界面

?

第二種方法:

1、如果不喜歡雙擊啟動的話,也可以在cmd里面通過指令啟動

先cd到tools目錄下,然后輸入uiautomatorviewer.bat回車后啟動服務


二、連接手機

1、cmd打開輸入adb devices,確認手機已連上(以夜神模擬器為例)

2、打開手機淘寶頁面,讓屏幕處于點亮狀態

?

3、點左上角安卓機器人按鈕Devices Screenshot按鈕刷新頁面

?

三、定位元素

1、移動鼠標到需要定位的元素上,如搜索輸入框

?

2、右下角可以看到元素對應的屬性

text:好沙發需要好坐墊resource-id:com.taobao.taobao:id/home_searcheditclass:android.widget.EditText

四、點搜索框

1、前面一篇啟動app后,休眠五秒,等待頁面加載完成

2、通過id來定位到搜索框,然后點擊

?

五、參考代碼

# coding=utf-8
from appium import webdriver
import time
desired_caps = {}
desired_caps['platformName'] = 'Android'   #android的apk還是IOS的ipa
desired_caps['platformVersion'] = '8.0'  #android系統的版本號
desired_caps['deviceName'] = '127.0.0.1:62001'    #手機設備名稱,通過adb devices  查看
desired_caps['appPackage'] = 'com.taobao.taobao'  #apk的包名
desired_caps['appActivity'] = 'com.taobao.tao.welcome.Welcome'  #apk的launcherActivity
#desired_caps['unicodeKeyboard'] = True   #使用unicodeKeyboard的編碼方式來發送字符串
#desired_caps['resetKeyboard'] = True   #將鍵盤給隱藏起來
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) #啟動服務器地址,后面跟的是手機信息
# 休眠五秒等待頁面加載完成
time.sleep(5)driver.find_element_by_id("com.taobao.taobao:id/home_searchedit").click()# driver.quit()

?

六、元素定位

1、appium的webdriver提供了11種元素定位方法,在selenium的基礎上擴展了三個,可以在pycharm里面輸入driver.find_element_by然后會自動匹配出來

2、多的三種如下,在后面的會詳細介紹

driver.find_element_by_accessibility_id()driver.find_element_by_android_uiautomator()driver.find_element_by_ios_uiautomation()

(第三個是ios的可以暫時不用管)

二、Inspector

  Appium Inspector是appium自帶的一個元素定位工具,前邊介紹了如何使用uiautomatorviewer進行元素定位。這里就學習Appium Inspector是如何定位的。

  Appium Inspector 對于測試的同學不得不說是一個神器,可以查詢到我們需要定位的元素的 id 等各種信息 ,還可以 錄制用戶行為,翻譯成腳本。逆天的是可以翻譯成多種語言的腳本。這并不意味著測試的同學可以不用學習語言和編程了,因為機器翻譯出的腳本一般很難一次執行成功,其中很可能還需要經過人工修改后才能順利執行,但是這已經可以為測試腳本的編寫帶來很大的遍歷,所以 Appium Inspector 還是值得我們去學習和使用。
?

一、設置appium

1、先不要啟動appium,因為啟動以后就不能操作appium設置界面,必須在未啟動的時候進行操作

2、點開android setting界面(機器人圖標)

3、勾選Application Path,添加被測app的路徑

4、Devices name處添加設備名稱(adb devices查看到的)

?

(注意:通過這種方法也可查看到apk的包名和Launch Activity)

?

?

二、開啟appium

1、手機確保連接電腦(adb devices查看)(仍然以夜神模擬器為例)

2、點appium右上角三角形圖標,會啟動服務

?

3、這時候可以看到手機上安裝淘寶應用,并會啟動淘寶

4、點appium右上角的搜索圖標

?

5、點Inspector Window界面的 Refresh 按鈕刷新界面

?

三、Ispector Window

1、手機上打開需要單位元素的界面,然后點Refresh按鈕刷新

2、左邊菜單樹,可以挨個點開

3、如果想單位界面上的“是”和“否”按鈕,從菜單樹就可以看到這兩個元素的結構

四、查看屬性

1、選中左側菜單樹對應的元素,在右下角查看對應屬性

?

?

五、常見異常

1、在使用過程中,你會發現經常會報以下這個錯誤

2、每次啟動都會給你手機上重新安裝一次應用

3、并且不能用鼠標指定某個元素,沒有uiautomatorviewer使用方便

(要是以上三種問題你都遇到了,怎么辦???那就放棄吧!!!)

相信很多人在使用過程中,都會遇到中文無法輸入問題,在后續文章里會手把手教大家如何輸入中文。

三、小結

Android SDK中的UIAutomator中本身是不支持網頁中的UI元素定位,下面介紹幾種常用的定位app內部的網頁的UI元素的方法。

一、使用chrome瀏覽器調試移動端網頁

? ? ? ?這是使用最多的一種方法。首頁確保自己的手機已經跟電腦連接且處于開發者模式。

? ? ? ?打開PC端的谷歌瀏覽器,輸入chrome://inspect/#devices,會看到下圖所示界面:

?

? ? ?點擊需要測試的網頁下方的inspect,且保證手機界面停留在那個頁面。

?

?

? ? ? 這樣打開后是不是就熟悉了,點擊上方紅色標記的就可以操作進行定位了~~~

?二、Android手機的鋪助功能帶有TalkBack

? ? ? ? 之前一直用的是谷歌的方法,但是最近發現使用talkback可以直接用UIAutomator定位元素。??

? ? ? ??Android系統一般自帶一個TalkeBack功能。但這里千萬要注意:打開之后整個系統的操作都變得不同了!!滑動界面需要兩個手指,單擊變成雙擊。打開之后用UiAutomatorViewer獲取webview界面的內容,你就會發現原來webview里面獲取不到的ui元素,現在已經可以可以獲取到了。即使現在你關掉TalkBack,也能獲取到,除非重啟手機才會回到不能獲取的狀態,所以開啟后我們可以立即關閉,以方便操作。有些手機沒有talkBack的可以去應用市場下載。

? ? ? ?功能路徑:
? ? ? ?原生系統:設置 – 輔助功能(Accessibility) – TalkBack
? ? ? ?華為EMUI系統:設置 – 高級設置 – 輔助功能 – TalkBack

三、在哪里遇到的問題

?

查看appium日志的error發現沒有設備名字報錯

?

將夜神模擬器的名字加上就成功了

?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/84227.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/84227.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/84227.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

apipost將token設置為環境變量

右上角 可以新增或者是修改當前的環境 環境變量增加一個token,云端值和本地值可以不用寫 在返回token的接口里設置后執行操作,通常是登錄的接口 右側也有方法提示 //設置環境變量 apt.environment.set("token", response.json.data.token); 在需要傳t…

【Docker 02】Docker 安裝

🌈 一、各版本的平臺支持情況 ? 1. Server 版本 Server 版本的 Docker 就只有個命令行,沒有界面。 Platformx86_64 / amd64arm64 / aarch64arm(32 - bit)s390xCentOs√√Debian√√√Fedora√√Raspbian√RHEL√SLES√Ubuntu√√√√Binaries√√√ …

青少年編程與數學 01-011 系統軟件簡介 08 Windows操作系統

青少年編程與數學 01-011 系統軟件簡介 08 Windows操作系統 1. Windows操作系統的起源與發展1.1 早期版本(1985-1995)1.2 Windows 9x系列(1995-2000)1.3 Windows NT系列(1993-2001)1.4 Windows XP及以后版…

微服務架構的性能優化:鏈路追蹤與可觀測性建設

📋 目錄 引言:微服務性能挑戰微服務架構性能瓶頸分析可觀測性體系概述鏈路追蹤技術深度解析性能監控指標體系日志聚合與分析分布式追蹤系統實現性能優化策略與實踐自動化性能調優故障診斷與根因分析最佳實踐與案例研究未來發展趨勢 引言 隨著微服務架…

ubuntu屏幕復制

在ubnuntu20中沒有辦法正常使用鏡像功能,這里提供一下復制屏幕的操作. 使用xrandr查看所有的顯示器情況 這里我發現自己的電腦沒有辦法直接設置分辨率,但是外接的顯示器可以設置,從命令行來說就是設置: xrandr --output HDMI-0 --mode 1920x1080那怎么樣才能將原生電腦屏幕換…

Android 線性布局中常見的沖突屬性總結

1. gravity vs layout_gravity 沖突原因:兩者作用對象不同,混用會導致行為異常。 區別: android:gravity:父容器的屬性,控制子元素在容器內的對齊方式。android:layout_gravity:子元素的屬性,控…

0x-4-Oracle 23 ai-sqlcl 25.1.1 獨立安裝-配置和優化

一、獨立安裝sqlcl 1. ?安裝 Java 環境? SQLcl 需要 Java 1.8.0_220 或更高版本, Oracle Linux9.6 上已經默認安裝Oracle 23ai后Java 是11 lts版本 如果java jdk安裝錯誤將遇上SQLcl困擾n多人的bug sql /nolog 錯誤:找不到或加載主類 oracle.dbto…

如何評價華為最新長焦專利技術?能否顛覆手機長焦攝影的目前限制?

擊上方關注 “終端研發部” 設為“星標”,和你一起掌握更多數據庫知識 目前透露的消息來看是3.7倍和10倍!!! 據悉,華為即將發布的Pura 80系列手機將率先采用這一革命性的專利技術。 華為的伸縮專利讓鏡頭模組學會了&qu…

基于SpringBoot實現的大創管理系統設計與實現【源碼+文檔】

基于SpringBootVue實現的大創管理系統采用前后端分離架構方式,系統設計了管理員、學生、指導老師、院系管理員兩種角色,系統實現了用戶登錄與注冊、個人中心、學生管理、指導老師管理、院系管理員管理、優秀項目管理、項目類型管理、項目信息管理、項目申…

4-C#的不同窗口傳值

C#的不同窗口傳值 1.通過構造函數傳值 this.Hide(); Form1 form01 new Form1(textBox2.Text); //Application.Run(form01); form01.Show();public Form1(string aaa) {InitializeComponent();label12.Text aaa; }2.全局類傳值 namespace WindowsFormsApp1 {public class G…

CentOS 7 如何pip3安裝pyaudio?

CentOS 7 如何pip3安裝pyaudio&#xff1f; # 先將yum軟件源改為阿里云鏡像源 http://mirrors.aliyun.com/centos-vault/7.9.2009/ bash <(curl -sSL https://linuxmirrors.cn/main.sh) # 基于一鍵換源腳本&#xff0c;全部回車即可# pip3安裝模塊是從源碼構建&#xff08;…

低代碼采購系統搭建:鯨采云+能源行業訂單管理自動化案例

在能源行業數字化轉型浪潮下&#xff0c;某大型能源集團通過鯨采云低代碼平臺&#xff0c;僅用3周時間就完成了采購訂單管理系統的定制化搭建。本文將揭秘這一成功案例的實施路徑與關鍵成效。 項目背景與挑戰 該企業面臨&#xff1a; 供應商分散&#xff1a;200供應商使用不同…

基于機器學習的智能故障預測系統:構建與優化

前言 在現代工業生產中&#xff0c;設備故障不僅會導致生產中斷&#xff0c;還會帶來巨大的經濟損失。傳統的故障檢測方法依賴于人工巡檢和定期維護&#xff0c;這種方式效率低下且難以提前預測潛在故障。隨著工業物聯網&#xff08;IIoT&#xff09;和機器學習技術的發展&…

Android啟動時長優化(kernel部分)

硬件平臺&#xff1a;QCS6115 軟件平臺&#xff1a;Android13 Vendor Android14 Qssi 需求&#xff1a;設備從logo到進入Home頁面持續時間過長&#xff0c;接近60s&#xff0c;遂需要優化。首先嘗試內核部分的配置優化及有關裁剪&#xff0c;具體改動如下&#xff1a; diff …

若依添加添加監聽容器配置(刪除鍵,鍵過期)

1、配置Redis的鍵觸發事件 # 基礎配置 bind 0.0.0.0 # 允許所有IP連接 protected-mode no # 關閉保護模式&#xff08;生產環境建議結合密碼使用&#xff09; port 6379 # 默認端口 daemonize no …

vb監測Excel兩個單元格變化,達到閾值響鈴

需求 在Excel中實現監控兩個單元格之間的變化范圍&#xff0c;當達到某個設定的值的范圍內時&#xff0c;實現自動響鈴提示。 實現&#xff1a; 首先設置Excel&#xff0c;開啟宏、打開開發者工具&#xff0c;點擊visual Basic按鈕&#xff0c;然后在左側雙擊需要監測的shee…

用 Melos 解決 Flutter Monorepo 的依賴沖突:一個真實案例

在 Flutter 項目開發中&#xff0c;尤其是采用 Monorepo 架構管理多個相互關聯的包時&#xff0c;依賴沖突是一個常見且令人頭疼的問題。不同的包可能依賴同一個庫的不同版本&#xff0c;導致項目無法編譯或運行時出現難以調試的錯誤。 本文將基于一個 真實的 Flutter Monorep…

Spring AI 項目實戰(五):Spring Boot + AI + DeepSeek + Redis 實現聊天應用上下文記憶功能(附完整源碼)

系列文章 序號文章名稱1Spring AI 項目實戰(一):Spring AI 核心模塊入門2Spring AI 項目實戰(二):Spring Boot + AI + DeepSeek 深度實戰(附完整源碼)3Spring AI 項目實戰(三):Spring Boot + AI + DeepSeek 打造智能客服系統(附完整源碼)4Spring AI 項目實戰(四…

Vue 3 Teleport 實戰:優雅實現模態框、通知和全局組件

Vue 3 Teleport&#xff1a;突破 DOM 層級限制的組件渲染利器 在 Vue 應用開發中&#xff0c;組件通常與其模板的 DOM 結構緊密耦合。但當處理模態框&#xff08;Modal&#xff09;、通知&#xff08;Toast&#xff09;或全局 Loading 指示器時&#xff0c;這種耦合會成為障礙…

SVM超詳細原理總結

哈嘍&#xff0c;我是我不是小upper~ 今天想跟大家聊聊支持向量機&#xff08;SVM&#xff09;。很多初學者對這個算法模型特別感興趣&#xff0c;它也是初學者在學習過程中非常喜愛的一種模型&#xff0c;更是機器學習領域中極為重要的算法之一&#xff01; 今天想跟大家深入…