一、摘要

本篇博文,将阐述如何将环境&代码&APP联系起来工作

二、Java代码

我们先看一段真实的java代码,我将他放在了TestNG框架的@BeforeTest里,执行这段即可启动安卓手机上的APP“com.tencent.Q108” 后边一一详述

     @BeforeTest
public void setUp() throws MalformedURLException{
DesiredCapabilities caps = new DesiredCapabilities();
// des.setCapability("app", "c:\\");
caps.setCapability("automationname", "Appium");
caps.setCapability("platformName", "Android");
caps.setCapability("platformVersion", "23");
caps.setCapability("udid", "6EJ4C18A18000811");
caps.setCapability("deviceName", "Honor");
caps.setCapability("appPackage", "com.tencent.Q108");//com.android.contacts
caps.setCapability("appActivity", "com.tencent.Q108.SplashActivity");//.activities.PeopleActivity
caps.setCapability("appWaitActivity", "com.tencent.Q108.SplashActivity");
caps.setCapability("unicodeKeyboard", "True");
caps.setCapability("resetKeyboard", "True");
caps.setCapability("newCommandTimeout", "15");
caps.setCapability("nosign", "True");
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),caps);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}

三、Desired Capabilities

如下图所示,测试脚本到驱动移动端的整个运转过程,Desired capability是以一个JSON对象形式传递的,包含一组key和value值。它由客户端发送给服务端,告诉服务端期望的Capabilities(可以理解为一种能力)有哪些,然后服务端根据这些capabilities创建自动化会话(session)。

四、各个键值对的中的Value是怎么来的

获取 "udid"

手机连接电脑或模拟器开启,并确定已经开机手机的USB调试,CMD下输入adb devices,所获取的串“6EJ4C18A18000811”

获取"appPackage" 和 "appActivity"

将aapt.exe在安卓SDK的路径添加的系统环境变量的Path中去,例如

如果没有build-tools那说明还没有下载,可打开SDK Manager自行下载,下载完成后,添加Path路径即可

CMD下运行aapt,如下图所示则表明环境可以了

将准备测试的 APK 放到某个目录,在相同的目录下启动CMD,并执行如下命令:aapt dump badging tencentmobilemanager.apk(根据各自的apk包名来)

如图所示,能看到package:name/launchable activity:name, 这两项即使我们要获取的"appPackage" 和 "appActivity"

获取webdriver.Remote地址,注意这个地址可以自定义,例如你的手机连接在别的机器上通过这个IP的配置,一样可以实现驱动,并非只能驱动链接到本机的移动设备

启动Appium,如图所示设置能看到IP和端口

其他的参数均来自你实际的环境,根据实际环境配置即可

五、关于Desired Capabilities

关于它必须要重提一次

io.appium.java_client 也提供了MobileCapabilityType和AndroidMobileCapabilityType,看如下代码,也可以设置Capabilities

  • org.openqa.selenium.remote.DesiredCapabilities;
  • io.appium.java_client.remote.AndroidMobileCapabilityType;
  • io.appium.java_client.remote.MobileCapabilityType;
 package testscript;
import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.AndroidMobileCapabilityType;
import io.appium.java_client.remote.MobileCapabilityType;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test; public class Test_Scroll_Swipe {
AndroidDriver driver;
@BeforeClass
public void setUp() throws MalformedURLException{
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
caps.setCapability(MobileCapabilityType.DEVICE_NAME,"Moto X");//I am using Moto X as a Real Device
caps.setCapability(AndroidMobileCapabilityType.APP_PACKAGE,"com.google.android.launcher");
caps.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY,"com.google.android.launcher.StubApp");
driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
}

且在Desired Capabilities的设置上Java和Python是同理的

Java&Python&Appium 驱动APP及Desired Capabilities配置的更多相关文章

  1. Python appium搭建app自动化测试环境

    appium做app自动化测试,环境搭建是比较麻烦的. 也是很多初学者在学习app自动化之时,花很多时间都难跨越的坎. 但没有成功的环境,就没有办法继续后续的使用. 在app自动化测试当中,我们主要是 ...

  2. Appium 工作原理及 Desired Capabilities

    一.Appium工作原理 脚本请求 --> 4723端口appium server --> 解析参数给PC端4724端口 --> 发送给设备4724端口 --> 通过设备472 ...

  3. 10.Appium驱动app报错

    1.首先手机使用usb连接电脑端接受控制 2.打开appium,配置Desired Capabilities 参数: Appium驱动打开微信App 参数配置如下: start session 报错: ...

  4. Appium基础四:Desired Capabilities详讲

    Desired Capabilities在启动session的时候是必须提供的,先看如下代码: Desired Capabilities本质上是key value的对象,他告诉appium serve ...

  5. Python+Appium实现APP自动化测试

    一.环境准备 1.脚本语言:Python3.x IDE:安装Pycharm 2.安装Java JDK .Android SDK 3.adb环境,path添加E:\Software\Android_SD ...

  6. appium入门篇之desired capabilities(2)

    目录 1.appium工作原理 desired capabilities 2.准备工作 3.第一个appium脚本 获取包名和启动的activity 编写脚本 运行结果 1.appium工作原理 启动 ...

  7. python appium 操作app

    下面是一些Python脚本中操作app的用法: 检查app安装情况(返回true/false), driver.is_app_installed(package_name) 安装app driver. ...

  8. Appium Python 三:Desired capabilities

    简介 Desired capabilities 是一些键值对的集合.python里面就采用字典的方式. 客户端将这些键值对发给服务端,告诉服务端我们想要怎么测试.比如,我们可以把 platformNa ...

  9. Appium移动自动化测试-----(七)Desired Capabilities

    Desired Capabilities Desired Capabilities 在启动 session 的时候是必须提供的. Desired Capabilities 本质上是以 key valu ...

随机推荐

  1. 【miscellaneous】语音识别工具箱综述和产品介绍

    原文:http://www.thinkface.cn/thread-893-1-1.html 今天是周末,想来想去,还是写一篇这样的博文吧.算是对语音识别这一段时间的总结,为后来的人融入铺好前面的路. ...

  2. 课程设计之C/C++实现用户登录注册

    最近的一个课程设计要求的一个用户登录的程序,通常软件网页等的用户登录注册都是涉及到数据库.但像课程设计这种小程序要求的安全度不高就可以用c/c++实现. 首先,我们要清楚用户登录的流程.应该大家对这些 ...

  3. 如何使用 Issue 管理软件项目?

    软件开发(尤其是商业软件)离不开项目管理,Issue 是最通用的管理工具之一.

  4. docker入门2--生命周期

      容器的概念: 一句话概括容器:容器就是将软件打包成标准化单元,以用于开发.交付和部署. 容器镜像是轻量的.可执行的独立软件包 ,包含软件运行所需的所有内容:代码.运行时环境.系统工具.系统库和设置 ...

  5. 1.3.1 Lock接口及其实现

    1.锁的本质 2.Lock接口使用ReentrenLock 3.读写锁使用 4.读写锁实现 Lock接口方法 有点意思的是lockInterruptibly(), 只要没有获取到锁就会一直等待,直到某 ...

  6. (七)mybatis 的输入映射与输出映射

    目录 前言 输入映射 - - 传递 pojo 包装类型 (复杂查询 ) 输出映射 - - resultType 输出映射 - - resultMap 前言 通过 paramterType 指定输入参数 ...

  7. POJ 1742 (单调队列优化多重背包+混合背包)

    (点击此处查看原题) 题意分析 给你n种不同价值的硬币,价值为val[1],val[2]...val[n],每种价值的硬币有num[1],num[2]...num[n]个,问使用这n种硬币可以凑齐[1 ...

  8. image的路径写法格式

    if (MapGrid.Visibility == Visibility.Visible) {      this.MapGrid.Visibility = Visibility.Collapsed; ...

  9. Lambda表达式使用方法整理

    匿名内部类                                                                               Lambda表达式 匿名内部类  ...

  10. C# 读取本地图片

    /// <summary> /// 通过FileStream 来打开文件,这样就可以实现不锁定Image文件,到时可以让多用户同时访问Image文件 /// </summary> ...