簡單介紹
之前已經(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ù)



注釋:
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ò)。

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