python開(kāi)發(fā)App基礎(chǔ)操作API使用示例過(guò)程
手機(jī)控件查看工具uiautomatorviewer
工具簡(jiǎn)介
用來(lái)掃描和分析Android應(yīng)用程序的UI控件的工具.
如何使用
1.進(jìn)入SDK目錄下的tools目錄,打開(kāi)uiautomatorviewer
2.電腦連接真機(jī)或打開(kāi)android模擬器
3.啟動(dòng)待測(cè)試app
4.點(diǎn)擊uiautomatorviewer的左上角Device Screenshot,會(huì)生成app當(dāng)前頁(yè)面的UI控件截圖
5.選擇截圖上需要查看的控件,即可瀏覽該控件的id,class,text,坐標(biāo)等信息
APP元素定位操作
Appium常用元素定位方式
前置代碼
from appium import webdriver # server 啟動(dòng)參數(shù) desired_caps = {} # 設(shè)備信息 desired_caps['platformName'] = 'Android' desired_caps['platformVersion'] = '5.1' desired_caps['deviceName'] = '192.168.56.101:5555' # app的信息 desired_caps['appPackage'] = 'com.android.settings' desired_caps['appActivity'] = '.Settings' # 聲明我們的driver對(duì)象 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
通過(guò)id定位
方法:find_element_by_id(id_value) # id_value:為元素的id屬性值
業(yè)務(wù)場(chǎng)景:
1.進(jìn)入設(shè)置頁(yè)面
2.通過(guò)ID定位方式點(diǎn)擊搜索按鈕
通過(guò)class定位
方法:find_element_by_class_name(class_value) # class_value:為元素的class屬性值
業(yè)務(wù)場(chǎng)景:
1.進(jìn)入設(shè)置頁(yè)面
2.通過(guò)搜索按鈕
3.通過(guò)class定位方式點(diǎn)擊輸入框的返回按鈕
通過(guò)xpath定位
方法:find_element_by_xpath(xpath_value) # xpath_value:為可以定位到元素的xpath語(yǔ)句 *** android端xptah常用屬性定位: 1. id ://*[contains(@resource-id,'com.android.settings:id/search')] 2. class ://*[contains(@class,'android.widget.ImageButton')] 3. text ://*[contains(@text,'WLAN')] *** 模糊定位 contains(@key,value): value可以是部分值
業(yè)務(wù)場(chǎng)景:
1.進(jìn)入設(shè)置頁(yè)面
2.點(diǎn)擊WLAN菜單欄
定位一組元素,注意element -> elements
應(yīng)用場(chǎng)景為元素值重復(fù),無(wú)法通過(guò)元素屬性直接定位到某個(gè)元素,只能通過(guò)elements方式來(lái)選擇,返回一個(gè)定位對(duì)象的列表.
WebDriverWait 顯示等待操作
在一個(gè)超時(shí)時(shí)間范圍內(nèi),每隔一段時(shí)間去搜索一次元素是否存在,
如果存在返回定位對(duì)象,如果不存在直到超時(shí)時(shí)間到達(dá),報(bào)超時(shí)異常錯(cuò)誤。
方法:WebDriverWait(driver, timeout, poll_frequency).until(method)
參數(shù):
driver
:手機(jī)驅(qū)動(dòng)對(duì)象
timeout
:搜索超時(shí)時(shí)間
poll_frequency
:每次搜索間隔時(shí)間,默認(rèn)時(shí)間為0.5s
method
:定位方法(匿名函數(shù))
使用示例:
WebDriverWait(driver, timeout, poll_frequency).until(lambda x: x.find_elements_by_id(id_value))
解釋:
1.x傳入值為:driver,所以才可以使用定位方法.
函數(shù)運(yùn)行過(guò)程:
1.實(shí)例化WebDriverWait類,傳入driver對(duì)象,之后driver對(duì)象被賦值給WebDriverWait的一個(gè)類變量:self._driver
2.until為WebDriverWait類的方法,until傳入method方法(即匿名函數(shù)),之后method方法會(huì)被傳入self._driver
3.搜索到元素后until返回定位對(duì)象,沒(méi)有搜索到函數(shù)until返回超時(shí)異常錯(cuò)誤.
業(yè)務(wù)場(chǎng)景:
1.進(jìn)入設(shè)置頁(yè)面
2.通過(guò)ID定位方式點(diǎn)擊搜索按鈕
發(fā)送數(shù)據(jù)到輸入框
方法:send_keys(vaue) # value:需要發(fā)送到輸入框內(nèi)的文本
業(yè)務(wù)場(chǎng)景:
1.進(jìn)入設(shè)置頁(yè)面
2.點(diǎn)擊搜索按鈕
3.輸入內(nèi)容abc
解決輸入中文問(wèn)題:
server
啟動(dòng)參數(shù)增加兩個(gè)參數(shù)配置
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
清空輸入框內(nèi)容:
方法:clear()
獲取元素的屬性值
方法: get_attribute(value) # value:元素的屬性
業(yè)務(wù)場(chǎng)景:
1.進(jìn)入設(shè)置頁(yè)面
2.獲取搜索按鈕的content-desc屬性值
value='name' 返回content-desc / text屬性值 value='text' 返回text的屬性值 value='className' 返回 class屬性值,只有 API=>18 才能支持 value='resourceId' 返回 resource-id屬性值,只有 API=>18 才能支持
獲取元素在屏幕上的坐標(biāo)
方法:location
獲取app包名和啟動(dòng)名
獲取包名方法:current_package
獲取啟動(dòng)名:current_activity
APP元素事件操作API
swip滑動(dòng)事件
從一個(gè)坐標(biāo)位置滑動(dòng)到另一個(gè)坐標(biāo)位置,只能是兩個(gè)點(diǎn)之間的滑動(dòng)
方法:swipe(start_x, start_y, end_x, end_y, duration=None)
參數(shù):
1.start_x
:起點(diǎn)X軸坐標(biāo)
2.start_y
:起點(diǎn)Y軸坐標(biāo)
3.end_x
: 終點(diǎn)X軸坐標(biāo)
4.end_y
: 終點(diǎn)Y軸坐標(biāo)
5.duration
: 滑動(dòng)這個(gè)操作一共持續(xù)的時(shí)間長(zhǎng)度,單位:ms
業(yè)務(wù)場(chǎng)景:
1.進(jìn)入設(shè)置頁(yè)面
2.從坐標(biāo)(148,659)滑動(dòng)到(148,248)
scroll滑動(dòng)事件
從一個(gè)元素滑動(dòng)到另一個(gè)元素,直到頁(yè)面自動(dòng)停止
方法:scroll(origin_el, destination_el)
參數(shù):
1.origin_el
:滑動(dòng)開(kāi)始的元素
2.destination_el
:滑動(dòng)結(jié)束的元素
業(yè)務(wù)場(chǎng)景:
1.進(jìn)入設(shè)置頁(yè)面
2.從存儲(chǔ)菜單位置滑動(dòng)到WLAN菜單位置
drag拖拽事件
從一個(gè)元素滑動(dòng)到另一個(gè)元素,第二個(gè)元素替代第一個(gè)元素原本屏幕上的位置
方法:drag_and_drop(origin_el, destination_el)
參數(shù):
1.origin_el
:滑動(dòng)開(kāi)始的元素
2.destination_el
:滑動(dòng)結(jié)束的元素
應(yīng)用置于后臺(tái)事件
APP放置后臺(tái),模擬熱啟動(dòng)
方法:background_app(seconds)
參數(shù):
1.seconds
:停留在后臺(tái)的時(shí)間,單位:秒
APP模擬手勢(shì)高級(jí)操作
TouchAction是AppiumDriver的輔助類,主要針對(duì)手勢(shì)操作,比如滑動(dòng)、長(zhǎng)按、拖動(dòng)等,
原理是將一系列的動(dòng)作放在一個(gè)鏈條中發(fā)送到服務(wù)器,服務(wù)器接受到該鏈條后,解析各個(gè)動(dòng)作,逐個(gè)執(zhí)行
所有手勢(shì)都要通過(guò)執(zhí)行函數(shù)才會(huì)運(yùn)行
手指輕敲操作
模擬手指輕敲一下屏幕操作
方法:tap(element=None, x=None, y=None)
方法:perform() # 發(fā)送命令到服務(wù)器執(zhí)行操作
參數(shù):
1.element
:被定位到的元素
2.x
:相對(duì)于元素左上角的坐標(biāo),通常會(huì)使用元素的X軸坐標(biāo)
3.y
:通常會(huì)使用元素的Y軸坐標(biāo)
業(yè)務(wù)場(chǎng)景:
1.進(jìn)入設(shè)置頁(yè)面
2.點(diǎn)擊WLAN選項(xiàng)
手指按操作
模擬手指按下屏幕,按就要對(duì)應(yīng)著離開(kāi).
方法:press(el=None, x=None, y=None)
方法:release() # 結(jié)束動(dòng)作,手指離開(kāi)屏幕
參數(shù):
1.element:被定位到的元素
2.x:通常會(huì)使用元素的X軸坐標(biāo)
3.y:通常會(huì)使用元素的Y軸坐標(biāo)
等待操作
方法:wait(ms=0)
參數(shù):
ms:暫停的毫秒數(shù)
業(yè)務(wù)場(chǎng)景:
1.進(jìn)入設(shè)置頁(yè)面
2.點(diǎn)擊WLAN選項(xiàng)
3.長(zhǎng)按選項(xiàng)5秒
手指長(zhǎng)按操作
模擬手機(jī)按下屏幕一段時(shí)間,按就要對(duì)應(yīng)著離開(kāi).
方法:long_press(el=None, x=None, y=None, duration=1000)
參數(shù):
1.element:被定位到的元素
2.x:通常會(huì)使用元素的X軸坐標(biāo)
3.y:通常會(huì)使用元素的Y軸坐標(biāo)
4.duration:持續(xù)時(shí)間,默認(rèn)為1000ms
手指移動(dòng)操作
模擬手機(jī)的滑動(dòng)操作
方法:move_to(el=None, x=None, y=None)
參數(shù):
1.el:定位的元素
2.x:相對(duì)于前一個(gè)元素的X軸偏移量
3.y:相對(duì)于前一個(gè)元素的Y軸偏移量
業(yè)務(wù)場(chǎng)景:
1.進(jìn)入設(shè)置頁(yè)面
2.向上滑動(dòng)屏幕
練習(xí):
業(yè)務(wù)場(chǎng)景:
1.進(jìn)入設(shè)置頁(yè)面
2.向上滑動(dòng)屏幕到可見(jiàn)“安全”選項(xiàng)
3.進(jìn)入到安全
4.點(diǎn)擊屏幕鎖定方式
5.點(diǎn)擊圖案
6.繪制圖案
以上就是python開(kāi)發(fā)App基礎(chǔ)操作API使用示例過(guò)程的詳細(xì)內(nèi)容,更多關(guān)于python開(kāi)發(fā)App基礎(chǔ)操作API的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 利用python實(shí)現(xiàn)flappy bird 游戲(完整代碼)
- 用python基于appium模塊開(kāi)發(fā)一個(gè)自動(dòng)收取能量的小助手
- 將Python腳本打包成MACOSAPP程序過(guò)程
- python利用Appium實(shí)現(xiàn)自動(dòng)控制移動(dòng)設(shè)備并提取數(shù)據(jù)功能
- python爬蟲之Appium爬取手機(jī)App數(shù)據(jù)及模擬用戶手勢(shì)
- Python使用Appium在移動(dòng)端抓取微博數(shù)據(jù)的實(shí)現(xiàn)
- Python用HBuilder創(chuàng)建交流社區(qū)APP
相關(guān)文章
Python深入學(xué)習(xí)之對(duì)象的屬性
這篇文章主要介紹了Python深入學(xué)習(xí)之對(duì)象的屬性,本文從較深的層次講解對(duì)象屬性的內(nèi)部運(yùn)行方式,需要的朋友可以參考下2014-08-08Python多分支語(yǔ)句的三種結(jié)構(gòu)詳解
這篇文章主要介紹了Python多分支語(yǔ)句的三種結(jié)構(gòu),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08Python numpy和matlab的幾點(diǎn)差異介紹
這篇文章主要介紹了Python numpy和matlab的幾點(diǎn)差異,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07python協(xié)程之yield和yield?from實(shí)例詳解
Python在并發(fā)處理上不僅提供了多進(jìn)程和多線程的處理,還包括了協(xié)程,下面這篇文章主要給大家介紹了關(guān)于python協(xié)程之yield和yield?from的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12Python3.8對(duì)可迭代解包的改進(jìn)及用法詳解
這篇文章主要介紹了Python3.8對(duì)可迭代解包的改進(jìn)及用法詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10python實(shí)現(xiàn)打開(kāi)手機(jī)app并點(diǎn)擊操作
這篇文章主要介紹了python實(shí)現(xiàn)打開(kāi)手機(jī)app并點(diǎn)擊操作,本文分為兩部分一部分是打開(kāi)應(yīng)用,第二部分是調(diào)式手機(jī)連接電腦,需要的朋友可以參考下2022-04-04python并發(fā)編程多進(jìn)程之守護(hù)進(jìn)程原理解析
這篇文章主要介紹了python并發(fā)編程多進(jìn)程之守護(hù)進(jìn)程原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08Python Pandas 獲取列匹配特定值的行的索引問(wèn)題
這篇文章主要介紹了Python Pandas 獲取列匹配特定值的行的索引問(wèn)題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07