-
在手機(jī)打開(kāi)開(kāi)發(fā)者模式并且通過(guò)usb數(shù)據(jù)線連接電腦丁鹉,使用
adb devices
檢查鏈接是否正確
-
打開(kāi)Android SDK目錄下
\tool\uiautomatorviewer.bat
工具,工具分四個(gè)工作區(qū)衣撬。
????* 工作欄:第一與第四分別為打開(kāi)和保存撰糠,中間兩個(gè)為捕獲按鈕饥悴,點(diǎn)擊捕獲按鈕會(huì)將鏈接電腦手機(jī)的頁(yè)面捕獲下來(lái)在工具中展示,工具不會(huì)隨著手機(jī)視圖更新而自動(dòng)更新烤镐。需要手動(dòng)捕獲
????* 頁(yè)面視圖:捕獲時(shí)手機(jī)的手機(jī)展現(xiàn)的視圖
????* 頁(yè)面層級(jí):捕獲的視圖的元素層級(jí)
????* 元素屬性:所查看的元素屬性蛋济,這里需要注意,Android中ID(resource-id)不一定是唯一的炮叶。 元素操作:由于Appium是在Selenium基礎(chǔ)上二次開(kāi)發(fā)的產(chǎn)品碗旅,所以在使用上與Selenium幾乎一致,但為了解決Android定位的問(wèn)題镜悉,在原Selenium8種定位的基礎(chǔ)上新添加了10種定位函數(shù)祟辟,但一般我們使用Selenium常用的就夠了
resource-id = id driver.find_element_by_id("com.tencent.mm:id/apx")
class = class_name driver.find_element_by_class_name("android.view.View")
text = name driver.find_element_by_name("優(yōu)柯瑪")
content-desc = AccessibilityId 截圖中無(wú)此ID
由于Android中ID并不一定是唯一的,所以也可以用xpath進(jìn)行定位:
xpath = driver.find_element_by_xpath("http://android.view.View[contains(@text,'優(yōu)柯瑪')]");
獲取到元素之后侣肄,與Selenium一樣旧困,也有click,send_keys,clear 等方法進(jìn)行操作稼锅。
- 功能支持:同樣的吼具,Appium作為移動(dòng)端自動(dòng)化測(cè)試解決方案,在Selenium的基礎(chǔ)上也新定義的一系列移動(dòng)設(shè)備的常見(jiàn)操作矩距,例如滑動(dòng)拗盒,打開(kāi)系統(tǒng)欄,縮放锥债,雙擊陡蝇,長(zhǎng)按,搖一搖等之類的函數(shù)赞弥。但對(duì)于我們業(yè)務(wù)測(cè)試而言毅整,很少用到,所以這里就不多詳細(xì)介紹绽左,有興趣了解的可以自行百度了解了解。
- 案例
# 在"通訊錄"頁(yè)面打開(kāi)聊天窗口
def __open_chat(self, keyword):
all_chat = self.driver.find_elements_by_id("com.tencent.mm:id/ja") # 通過(guò)ID獲取當(dāng)前頁(yè)面所有好友列表
chat_name = [x.text for x in all_chat] # 上一步獲取的好友列表的名稱
chat_old = [] # 上一次名稱列表艇潭,用以判斷頁(yè)面是否完全加載完成
while chat_name != chat_old: #如果當(dāng)前列表名稱不等于上一次名稱
chat_old = chat_name[::]
for names in all_chat: #循環(huán)當(dāng)前名稱列表拼窥,
if names.text == keyword: #判斷其中是否有元素的名稱與傳入的參數(shù)一致戏蔑,如果有則點(diǎn)擊該元素并返回True
names.click()
self.driver.find_element_by_id("com.tencent.mm:id/anc").click() #在通訊錄中點(diǎn)擊好友后彈出的頁(yè)面中點(diǎn)擊發(fā)消息
return True
else:
width = self.driver.get_window_size()['width'] # 獲取當(dāng)前設(shè)備的頁(yè)面尺寸
height = self.driver.get_window_size()['height']
self.driver.swipe(width * 0.5, height * 0.75, width * 0.5, height * 0.25) # 向上滑動(dòng)屏幕
all_chat = PageElement("com.tencent.mm:id/ja").entity(self.driver, True) #滑動(dòng)之后重新獲取好友列表
chat_name = [x.text for x in all_chat] #更新好友名稱列表
else:
return False