macaca之a(chǎn)pp-inspector

簡單介紹

之前已經(jīng)將macaca的環(huán)境搭建好了,現(xiàn)在就需要進(jìn)行元素的定位,這里使用app-inspector,然后進(jìn)行自動(dòng)化腳本的編寫。


實(shí)際操作

一、安裝app-inspector

npm i app-inspector -g

安裝成功

確保如下命令中有手機(jī)或模擬器的連接,可以取得設(shè)備ID

adb devices

啟動(dòng)app-inspector的命令

app-inspector -u設(shè)備id

指令
元素查看

至此已經(jīng)完成app-inspector的配置,接下來就是進(jìn)行元素的定位以及腳本編寫。

二、定位

這里用微信登錄為例子介紹一下。首先微信安裝后需要選擇“登錄”,再選擇登錄方式(手機(jī)號(hào)碼或者微信賬號(hào)等),之后輸入微信賬號(hào)密碼,最后點(diǎn)擊登錄即可。按照這個(gè)思路可以進(jìn)行自動(dòng)的開始了。

1、連接設(shè)備,開啟服務(wù)

開啟服務(wù)
元素界面
界面

注釋:

1:手機(jī)微信界面

2:元素

3:定位方式

2、選擇定位方式

元素定位有多種定位方式,可以通過id、class name、name、css、xpath等。具體的查看文檔:Macaca

3、編寫腳本

如下:

# -*- coding: utf-8 -*-

'''

@author: M_派森

@time: 2018/5/22 14:22

'''

import unittest

import time

from macaca import WebDriver

from retrying import retry

desired_caps = {

? ? 'platformName': 'android',

? ? 'package':'com.tencent.mm',

? ? 'activity':'.ui.LauncherUI'

? ? }

server_url = {

? ? 'hostname': 'localhost',

? ? 'port': 3456

}

class MacacaTest(unittest.TestCase):

? ? @classmethod

? ? def setUpClass(cls):

? ? ? ? cls.driver = WebDriver(desired_caps, server_url)

? ? ? ? cls.initDriver()

? ? @classmethod

? ? @retry

? ? def initDriver(cls):

? ? ? ? print("Retry connecting server...")

? ? ? ? cls.driver.init()

? ? def test_01_login(self):

? ? ? ? # 確認(rèn)彈窗

? ? ? ? self.driver.accept_alert()

? ? ? ? # 確認(rèn)彈窗

? ? ? ? self.driver.accept_alert()

? ? ? ? # 登錄

? ? ? ? self.driver.wait_for_elements_by_id('com.tencent.mm:id/d1w')[0].click()

? ? ? ? # 微信號(hào)/QQ號(hào)/郵箱登錄

? ? ? ? self.driver.wait_for_elements_by_id('com.tencent.mm:id/bwm')[0].click()

? ? ? ? # 輸入賬號(hào)

? ? ? ? self.driver.wait_for_elements_by_class_name('android.widget.EditText')[0].send_keys('*****')

? ? ? ? # 輸入密碼

? ? ? ? self.driver.wait_for_elements_by_class_name('android.widget.EditText')[1].send_keys('*****')

? ? ? ? # 登錄

? ? ? ? self.driver.wait_for_elements_by_id('com.tencent.mm:id/bwn')[0].click()

? ? ? ? time.sleep(10)

? ? @classmethod

? ? def tearDownClass(cls):

? ? ? ? cls.driver.quit()

if __name__ == '__main__':

? ? unittest.main()

問題:這里獲取到的元素為list,必須使用list的下標(biāo)索引方式將元素取出,不然會(huì)報(bào)錯(cuò)。

報(bào)錯(cuò)

以上就是一個(gè)微信的登錄過程。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容