1. 获取driver

appium通过生成driver来识别和操作app的UI元素。生成driver时,需要给出被测设备的相关信息。appium官方上的例子如下:

https://github.com/appium-boneyard/sample-code/blob/master/sample-code/examples/java/appium-generic-test/src/test/java/AndoridBrowserLocalTest.java

    public static AndroidDriver<?> mobiledriver;
@BeforeTest
public void beforeTest( ) throws MalformedURLException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.APPIUM_VERSION, "1.7.2");
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME,"Android");
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME,"Appium");
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Browser");
capabilities.setCapability("newCommandTimeout", 2000);
mobiledriver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}

Android 第三方被测app举例:

    public static AndroidDriver<?> driver1;

    public static void main(String[] args) {

        //set up Appium
DesiredCapabilities capabilities1 = new DesiredCapabilities();
capabilities1.setCapability(MobileCapabilityType.AUTOMATION_NAME, "uiautomator2");
capabilities1.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
capabilities1.setCapability(MobileCapabilityType.PLATFORM_VERSION, "9.0.0");
capabilities1.setCapability(MobileCapabilityType.DEVICE_NAME, "PCT-AL10");
capabilities1.setCapability(MobileCapabilityType.UDID, "xxxx");
capabilities1.setCapability("appPackage", "com.xxxx.xxx.demo");
capabilities1.setCapability("appActivity", ".MainActivity");
//for input Chinese
capabilities1.setCapability("unicodeKeyboard", true);
capabilities1.setCapability("resetKeyboard", true); try {
driver1 = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities1);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
  }

  

如何获取以上信息呢?

  • MobileCapabilityType.APPIUM_VERSION: appium服务器的版本。可通过命令行appium -version 或 安装的appium server客户端查看。
  • MobileCapabilityType.PLATFORM_VERSION:  操作系统版本。Android可通过命令行 adb -s xxxx(欲连接的deviceID) shell getprop ro.build.version.release来查看。
  • MobileCapabilityType.PLATFORM_NAME: Android 或 iOS。
  • MobileCapabilityType.DEVICE_NAME: 被测设备名。Android可通过命令 adb -s xxxx shell getprop ro.product.model 查看。
  • appPackage: 被测app包名。Android可通过命令 adb shell pm list packages | grep xxxx来查看。
  • appActivity: 被测app activity名。可通过sdk里带的uiautomatorviewer查看。
  • MobileCapabilityType.UDID: 被测设备id。Android可通过命令 adb devices获得。

appium自动化 - android的更多相关文章

  1. Appium自动化Android环境搭建

      前言: 本系列教程用于个人经验记录,用于他人借鉴,提供一定参考价值.经常会有一种感觉,工具或技术在某一阶段使用比较熟练,过一段时间就可能会遗忘,俗话说好记性不如烂笔头,以此记录. appium简介 ...

  2. appium 自动化测试之知乎Android客户端

    appium是一个开源框架,相对来说还不算很稳定.转载请注明出处!!!! 前些日子,配置好了appium测试环境,至于环境怎么搭建,参考:http://www.cnblogs.com/tobecraz ...

  3. Appium自动化环境搭建(windows+Android)

    开始安装: 1.首先搭建好Android开发环境(eclipse+jdk+android的sdk包+Level17或以上的版本api) 2.设置ANDROID_HOME系统变量为你的Android S ...

  4. Windows下部署Appium教程(Android App自动化测试框架搭建)

    摘要: 1,appium是开源的移动端自动化测试框架: 2,appium可以测试原生的.混合的.以及移动端的web项目: 3,appium可以测试ios.android.firefox os: 4,a ...

  5. Appium之Android功能脚本

    Android功能脚本 注:这里只写了登录和退出功能,以下不提供app的包名,下面我使用的是线上包 准备:1.Eclipse的Java环境:2.Appium环境:3.Android真机一台. 创建一个 ...

  6. java+appium 自动化环境搭建

    1.安装JDK1.7及以上 2.下载解压sdk并且配置环境变量: ANDROID_HOME:...\adt-bundle-windows-x86_64-20140702\sdk PATH:%ANDRO ...

  7. appium 获取android 粘贴板上的内容

    appium 新版本增加了获取粘贴板的内容.如果使用appium旧版本,获取粘贴板的内容不是那么容易的,甚至百度谷歌各种搜,都无法找到合适的解决方法.新版本获取android 粘贴板内容就显得很容易了 ...

  8. appium自动化测试之UIautomatorviewer元素定位

    appium自动化测试之UIautomatorviewer元素定位 标签(空格分隔): uiautomatorviewer元素定位 前面的章节,已经总结了怎么搭建环境,怎样成功启动一个APP了,这里具 ...

  9. Appium自动化部署及连接Appium服务

    Appium自动化部署: 1)安装appium桌面程序安装:超链接 2)安装客户端 pip install appium-python-client 3)安装服务器 安装 Nodejs 4)连接app ...

随机推荐

  1. CentOS7.3安装Python3.6

    安装python3.6可能使用的依赖 # yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sql ...

  2. nginx处理请求的11个阶段

    Nginx 处理请求的过程一共划分为 11 个阶段,按照执行顺序依次是 post-read.server-rewrite.find-config.rewrite.post-rewrite.preacc ...

  3. [Agc028A]Two Abbreviations_数学

    Two Abbreviations 题目链接:https://atcoder.jp/contests/agc028/tasks/agc028_a 数据范围:略. 题解: 题目中的位置非常不利于思考,我 ...

  4. 使用nginx构建限频、限速、限并发的应用保护层

    使用nginx构建限频.限速.限并发的应用保护层 nginx本身提供了基础的限频.限速.限并发连接等能力. 限频 基于uri等限制某一个客户端,某类客户端持续时间段内建立连接的次数. 限速 限制客户端 ...

  5. Python 命名规范总结

    Python推荐命名规范: 模块名和包名采用小写字母并且以下划线分隔单词的形式: 如:browser_driver 类名或异常名采用每个单词首字母大写的方式: 如:BasePage, Keyboard ...

  6. MySql设计表中的create_time和update_time字段

    一般create_time和update_time字段的类型为datetime类型,长度为0

  7. Python 第二式

    @Codewars Python练习 question ** Simple transposition ** Simple transposition is a basic and simple cr ...

  8. jquery tablesorter 动态加载数据时,排序。过滤失效解决方案

    解决方案:重置更新: $("table").trigger("update"); 1 官方 ajax表格数据添加实例: $(document).ready(fu ...

  9. MyBatis 源码篇-Transaction

    本章简单介绍一下 MyBatis 的事务模块,这块内容比较简单,主要为后面介绍 mybatis-spring-1.**.jar(MyBatis 与 Spring 集成)中的事务模块做准备. 类图结构 ...

  10. 服务器上office不能正常使用?

    (1)确保dll版本和服务器上office版本一致 (2)配置dcom (3)项目配置文件中添加用户模拟语句 <system.web> <identity impersonate=& ...