简单介绍
之前已经将macaca的环境搭建好了,现在就需要进行元素的定位,这里使用app-inspector,然后进行自动化脚本的编写。
实际操作
一、安装app-inspector
npm i app-inspector -g
确保如下命令中有手机或模拟器的连接,可以取得设备ID
adb devices
启动app-inspector的命令
app-inspector -u设备id
至此已经完成app-inspector的配置,接下来就是进行元素的定位以及脚本编写。
二、定位
这里用微信登录为例子介绍一下。首先微信安装后需要选择“登录”,再选择登录方式(手机号码或者微信账号等),之后输入微信账号密码,最后点击登录即可。按照这个思路可以进行自动的开始了。
1、连接设备,开启服务
注释:
1:手机微信界面
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):
# 确认弹窗
self.driver.accept_alert()
# 确认弹窗
self.driver.accept_alert()
# 登录
self.driver.wait_for_elements_by_id('com.tencent.mm:id/d1w')[0].click()
# 微信号/QQ号/邮箱登录
self.driver.wait_for_elements_by_id('com.tencent.mm:id/bwm')[0].click()
# 输入账号
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的下标索引方式将元素取出,不然会报错。
以上就是一个微信的登录过程。