手机自动化测试:appium源码分析之bootstrap十六

 

poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标。如果对课程感兴趣,请大家咨询qq:908821478。

UpdateStrings

package io.appium.android.bootstrap.handler;

import io.appium.android.bootstrap.AndroidCommand;

import io.appium.android.bootstrap.AndroidCommandResult;

import io.appium.android.bootstrap.CommandHandler;

import io.appium.android.bootstrap.Logger;

import java.io.DataInputStream;

import java.io.File;

import java.io.FileInputStream;

import org.json.JSONObject;

/**

* This handler is used to update the apk strings.

*

*/

public class UpdateStrings extends CommandHandler {

/**

* strings.json文件保存的是apk的strings.xml里的内容,在Bootstrap启动前由appium服务器解析并push到设备端的

*

* @return

*/

public static boolean loadStringsJson() {

Logger.debug("Loading json...");

try {

final String filePath = "/data/local/tmp/strings.json";

final File jsonFile = new File(filePath);

// json will not exist for apks that are only on device

// 你的case必须写明apk的路径,如果启动设备上已有的应用而case中没有app路径,此时json文件是不存在的

// because the node server can't extract the json from the apk.

if (!jsonFile.exists()) {

return false;

}

final DataInputStream dataInput = new DataInputStream(

new FileInputStream(jsonFile));

final byte[] jsonBytes = new byte[(int) jsonFile.length()];

dataInput.readFully(jsonBytes);

// this closes FileInputStream

dataInput.close();

final String jsonString = new String(jsonBytes, "UTF-8");

// 将读取出来的信息赋给Find类中的属性,以做后用

Find.apkStrings = new JSONObject(jsonString);

Logger.debug("json loading complete.");

} catch (final Exception e) {

Logger.error("Error loading json: " + e.getMessage());

return false;

}

return true;

}

/*

* @param command The {@link AndroidCommand} used for this handler.

*

* @return {@link AndroidCommandResult}

*

* @see io.appium.android.bootstrap.CommandHandler#execute(io.appium.android.

* bootstrap.AndroidCommand)

*/

@Override

public AndroidCommandResult execute(final AndroidCommand command) {

if (!loadStringsJson()) {

return getErrorResult("Unable to load json file and update strings.");

}

return getSuccessResult(true);

}

}

在appium初始化的时候,如果你代码中添加了app应用,而不是启动手机设备中已经有的应用,这时候appium会将该app解析,并提取出设备当前语言环境的strings.xml文件里的信息保存在strings.json里,并将其push到手机的/data/local/tmp目录下,当你想要获取应用中用到的字符串时,手机会去该目录下读取strings.json文件并返回给客户端。

所以上面的代码也就是我上面说的过程。

手机自动化测试:appium源码分析之bootstrap十六的更多相关文章

  1. 手机自动化测试:appium源码分析之bootstrap十五

    手机自动化测试:appium源码分析之bootstrap十五   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣 ...

  2. 手机自动化测试:appium源码分析之bootstrap十四

    手机自动化测试:appium源码分析之bootstrap十四   poptest(www.poptest.cn)是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开 ...

  3. 手机自动化测试:appium源码分析之bootstrap十二

    手机自动化测试:appium源码分析之bootstrap十二   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣 ...

  4. 手机自动化测试:appium源码分析之bootstrap十

    手机自动化测试:appium源码分析之bootstrap十   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣, ...

  5. 手机自动化测试:appium源码分析之bootstrap三

    手机自动化测试:appium源码分析之bootstrap三   研究bootstrap源码,我们可以通过代码的结构,可以看出来appium的扩展思路和实现方式,从中可以添加我们自己要的功能,针对app ...

  6. 手机自动化测试:appium源码分析之bootstrap二

    手机自动化测试:appium源码分析之bootstrap二   在bootstrap项目中的io.appium.android.bootstrap.handler包中的类都是对应的指令类, priva ...

  7. 手机自动化测试:appium源码分析之bootstrap一

    手机自动化测试:appium源码分析之bootstrap一   前言: poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.popte ...

  8. 手机自动化测试:appium源码分析之bootstrap十七

    手机自动化测试:appium源码分析之bootstrap十七   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣 ...

  9. 手机自动化测试:appium源码分析之bootstrap十三

    手机自动化测试:appium源码分析之bootstrap十三   poptest(www.poptest.cn)是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开 ...

随机推荐

  1. GridControl 设置自带选中复选框及设置该列列头名称

    2.设置该列标题,设置事件CustomDrawColumnHeader 效果图:

  2. vmware安装黑苹果教程

    1.下载最新版vmware http://pan.baidu.com/s/1pLD8wxt 秘钥:UY192-0DW12-M81XY-DWW7C-MCKU6 2.确保hyper-v功能已关闭 3.下载 ...

  3. Linux-7.2+LNMP+zabbix-3.2.1

    LNMP+zabbix-3.2.1 一.zabbix服务端部署 1.解压 yum –y install bzip2 tar -xf nginx-1.10.1.tar.gz tar -xf php-5. ...

  4. 纯css实现京东导航菜单

    纯CSS代码实现导航菜单,推荐在chrome预览! 预览请点击这里:mygithub <!doctype html> <html lang="en"> &l ...

  5. 【PHP系列】PHP推荐标准之PSR-3,日志记录器接口

    上节聊完了PHP官方的相关代码规范,下面给大家带来了PHP系列的PHP推荐标准的另外两个,PSR-3,PSR-4. 首先,我们先来了解下PSR-3是怎么回事. PHP-FIG发布的第三个推荐规范与前两 ...

  6. 【转】Netty系列之Netty并发编程分析

    http://www.infoq.com/cn/articles/netty-concurrent-programming-analysis

  7. CK editor 制作 ”小“plugin

    ckeditor 是什么? http://ckeditor.com/ 这工具里有大量他人写好的功能(plugin),如果要求不高,会找到的.但是我就是没有找到... 需求: ·自己制作一个小功能,可以 ...

  8. webpack从0开始---(一)

    换了新环境,同时也有了新目标,从webpack开始. webpack:具体是什么,大家还是自行去看吧,这里就不多做介绍了! 传送门---webpack.github.io 网上的安装方法很多,这里我就 ...

  9. mysql 局域网同事之间直接用客户端访问

    情景: 几个人作为小组开发一个项目,以我的机器为服务器,将mysql服务安装在我的机器上,其他小伙伴用客户端都能访问我这个数据库 解决:   首先: 1.设置mysql允许其它机器连接(linux环境 ...

  10. Android--带你一点点封装项目 MVP+BaseActivity+Retrofit+Dagger+RxJava(三)

    1,这一篇博客是和大家一起来封装我们最后的Dagger2,其实之前也写过关于简单的Dagger2,这里是地址,完全没了解的同学可以先去看一下这篇,感谢很多小伙伴一直在耐心的等待这一篇 2,Dagger ...