最近为了兼容 android 端的 toast 消息验证,切到了 ui2.0,但是 ui2.0 没有弹窗自动点掉的实现
public class AndroidServer {
    private final int driverPort;
    private final HttpServer webServer;
    public AndroidServer(int port) {
        driverPort = port;
        webServer = new HttpServer(driverPort);
        init();
        errorHandle();
        Logger.info("AndroidServer created on port " + port);
    }
    ……
public void errorHandle() {
        getUiDevice().registerWatcher("installAPP", new UiWatcher() {
            @Override
            public boolean checkForCondition() {
                /**meizu **/
                //Logger.info("安装应用时,检查弹窗并点击允许");
                if (getUiDevice().hasObject(By.pkg(Pattern.compile("android")).text(Pattern.compile("允许")))) {
                    Logger.info("find the button: By.pkg(Pattern.compile(\"android\")).text(Pattern.compile(\"允许\")), click it");
                    getUiDevice().findObject(By.pkg(Pattern.compile("android")).text(Pattern.compile("允许"))).click();
                }
                return false; // no trigger);
            }
        });
        new Thread(new Runnable() {
            @Override
            public void run() {
                while(true) {
                    getUiDevice().runWatchers();
                    getUiDevice().waitForIdle(2000);//避免第一次runWatchers还没有完成,立即运行了第二次
                }
            }
        }).start();
    }
 法一:在起 server 时即调用该方法
法二:在创建 session 时调用该方法
因为现在 session 是单例的,所以这两个没什么区别,我选择的是第一个
因为 ui2.0 server 本身是 apk,存在安装时弹窗验证的问题,所以不能解决安装这两个 server apk 时的弹窗验证问题