Macaca Macaca 入门

xinxi · 2018年08月04日 · 1052 次阅读

引言

最近在做iOS UI自动化脚本,用appium + java已经跑起来了,appium使用的是wda引擎,在实际使用中感觉较慢.之前听过Macaca这个工具,使用是xctestwd引擎.

本次作为环境搭建,记录下入门心得

安装

这里推荐用淘宝的cnpm安装,npm在mac上总是安装失败

全局安装

cnpm i macaca-cli -g

安装iOS driver

cnpm i -g macaca-ios

安装Android driver

cnpm i macaca-android -g

查看页面元素工具

app-inspector工具,这个工具可以在web上显示页面元素.

官方:https://macacajs.github.io/app-inspector/

安装命令

cnpm install app-inspector -g

目前Android可以正常查看元素,iOS还暂时不可以

问题

这有个天坑,编译的时候报XCTestWD中报错

'No such module'Swifter''

解决方案

1.cd /usr/local/lib/node_modules/app-inspector/node_modules/_xctestwd@1.3.31@xctestwd
2.在Cartfile文件
github "cezheng/Fuzi" ~> 1.0.0,改成1.0.0
3.carthage update下载依赖

启动app-inspector

app-inspector -u 192.168.56.101:5555

启动macaca服务

普通模式

macaca server

详细模式

macaca server --verbose

可以看到session日志

maacaca for java

pom

我本地遇到的问题是,jar包没有下载到本地,目前先手动导入jar包替代.

<dependency>
<groupId>macaca.webdriver.client</groupId>
<artifactId>macacaclient</artifactId>
<version>2.0.20</version>
</dependency>

Android desiredCapabilities设置



/**
* 设置desiredCapabilities操作
*/

@Before
public void setUp() throws Exception {
Logger logger = Logger.getLogger(getClass());
JSONObject porps = new JSONObject();
porps.put("autoAcceptAlerts", true);
porps.put("platformName", "android"); // android or ios
porps.put("javascriptEnabled", true);
porps.put("platform", "ANY");
porps.put("package","com.xxxx.player");
porps.put("activity","com.xxxx.business.welcome.WelcomeActivity");
porps.put("udid","192.168.56.101:5555");
//porps.put("app", "path/to/app");
JSONObject desiredCapabilities = new JSONObject();
desiredCapabilities.put("desiredCapabilities", porps);
driver.initDriver(desiredCapabilities)

logger.info("启动app!");
}


iOS desiredCapabilities设置

/**
* 设置desiredCapabilities操作
*/

@Before
public void setUp() throws Exception {

logger = Logger.getLogger(getClass());
JSONObject porps = new JSONObject();
//porps.put("autoAcceptAlerts", true);
porps.put("platformName", "iOS"); // android or ios
porps.put("javascriptEnabled", true);
porps.put("platform", "iOS");
porps.put("bundleId","com.xxxx.xxxx-IOS");
porps.put("udid","93EAE4C0-70D4-4A9B-A04E-E21E1B53A911");
porps.put("deviceName","iPhone 6");
//porps.put("app", "path/to/app");
JSONObject desiredCapabilities = new JSONObject();
desiredCapabilities.put("desiredCapabilities", porps);
driver.initDriver(desiredCapabilities);
logger.info("启动app!");
}


API操作

简单看了常用api操作,基本上是和appium差不多.应该会apium的人,用macaca做自动化问题不大

简单列举几个操作

driver.elementsById()
driver.elementsById().cilck()
driver.elementsById().sendKeys();

最后

给我的感受就是搭建环境比appium麻烦,不过中文文档和demo代码做的都比较好,和appium各有千秋.

参考文章

Macaca环境搭建(iOS+Mac)

https://www.jianshu.com/p/eda698c96db8

Macaca之使用中存在的各种坑

https://blog.csdn.net/yxys01/article/details/73920702

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册