Appium 百度 MTCClient 的录制回放初步研究

思寒_seveniruby · 2013年12月01日 · 最后由 恒温 回复于 2013年12月02日 · 1899 次阅读

从百度 MTC 网站上下载了百度的 MTC 录制回放工具, MTCclient 很厚重, 是个使用 RCP 技术设计的 GUI 工具.
为了方便部署, 他集成了 java.
在他的代码例子中翻到了这个代码, 可以看到他其实是调用 cafe 框架.

今天他们网站不太稳定, 所以没深入研究. 我看 cafe 的 ppt, 貌似是 hook 了 app 的监听器, 这是否意味着他并不能很好的支持混合 app?

package com.baidu.recordreplay.test;
import java.io.IOException;
import java.util.ArrayList;
import com.baidu.cafe.CafeTestCase;
import android.view.KeyEvent;
public class MyTest extends CafeTestCase {
    private static final String     LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.baidu.netdisk.ui.Navigate";
    private static final String     TARGET_PACKAGE                   = "com.baidu.netdisk";
    private static Class<?>         launcherActivityClass;
    static {
        try {
            launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }
    public MyTest() {
        super(TARGET_PACKAGE, launcherActivityClass);
    }
    @Override
    protected void setUp() throws Exception {
        super.setUp();
    }
    @Override
    protected void tearDown() throws Exception {
        super.tearDown();
    }
    public void test_NewCase_0() {
        local.sleep(3000);;
        local.sleep(4855);
        local.dragPercent(0.6314338f, 0.6314338f, 0.38125f, 0.38125f, 4);
        local.screenShotNamedCaseName("pic_0001");
        local.sleep(1000);
        local.enterText("100001100", "gggh", false);
        local.screenShotNamedCaseName("pic_0002");
        local.sleep(8114);
        local.dragPercent(0.6222427f, 0.63051474f, 0.521875f, 0.509375f, 4);
        local.screenShotNamedCaseName("pic_0003");
        local.waitForTextByFamilyString("00100" , "普通登录");
        local.screenShotNamedCaseName("pic_0004");
    }

}

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 2 条回复 时间 点赞

从 ppt 里面看到他貌似是支持混合 app 的, 我翻看了下代码, 从如下文件中找到了对应的逻辑

https://github.com/seveniruby/Cafe/blob/master/testrunner/src/com/baidu/cafe/local/record/ViewRecorder.java

大概的意思是把常用控件的所有事件都增加监听事件进行记录, 混合 app 中的 html view, 也是采用类似的方法, 但是使用的是类似于 seleniumIDE 那样的录制体系. 通过 js 来增加事件 event

他基本把所有的事件都实现了一遍, 好庞大的代码.
能做出来如此强大的工具, 是个不容易的事情啊, 不得不佩服作者.

cafe 其他的功能也都非常炫, 推荐大家了解下.

#1 楼 @seveniruby 邀请他加入论坛吧

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