• 五 Android Capabilities讲解


    1.Capabilities介绍

    可以看下之前代码里面设置的capabilities

    DesiredCapabilities capabilities = new DesiredCapabilities();
    
    capabilities.setCapability("automationName", "Appium");
    
    capabilities.setCapability("platformName","Android");
    
    capabilities.setCapability("deviceName","Android Emulator");
    
    capabilities.setCapability("platformVersion", "4.4.2");
    
    capabilities.setCapability("app", app.getAbsolutePath());
    
    capabilities.setCapability("appPackage", "com.example.android.contactmanager");
    
    capabilities.setCapability("appActivity", ".ContactManager");

    Desired capability是一个JSON对象,包含一组key和value值。它由客户端发送给服务端,告诉服务端期望的Capabilities(可以理解为一种能力)有哪些,然后服务端根据这些capabilities创建自动化会话(session)。

    DesiredCapabilities位于这个包中:

    import org.openqa.Selenium.remote.DesiredCapabilities

    所以在使用DesiredCapabilities的时候需要先导入这个类。

     

    2.通用Capabilities

     

    .automationName

    这个capability主要是定义测试引擎。当你在安卓平台上进行测试的时候,你需要确认你使用的android sdk版本,如果是小于17的话,你需要指定测试引擎为:Selendroid。如果大于等于17,你需要使用的引擎是:Appium,默认就是Appium测试引擎。具体使用代码:

    DesiredCapabilities caps = new DesiredCapabilities();
    
    caps.setCapability("automationName","Selendroid");

    当然你也可以使用Appium的java-client库来设置capabilities,前提是你必须导入这个类:

    import io.appium.java_client.remote.MobileCapabilityType

    然后设置代码如下:

    caps.setCapability(MobileCapabilityType.AUTOMATION_NAME,"Selendroid");

    iOS无需进行这个设置,默认就是Appium引擎。

     

    ·platformName

    定义测试平台的名字,通常用于移动设备。值有:Android、iOS和FirefoxOS。使用代码如下:

    caps.setCapability("platformName","Android");

    还可以使用java-client提供的方式设置:

    caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");

    在使用的过程中,请按照实际平台来填写即可。

     

    ·platformVersion

    测试平台版本,移动设备固件的版本号,比如:iOS的7.1.1,9.3等,Android的4.4.2、5.1.1等。设置代码:

    caps.setCapability("platformVersion","4.4.4");

    Java-client提供的设置方式:

    caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4.4");

    还是请按照实际版本号来填写。

     

    ·deviceName

    移动设备的名字,比如iPhone 5s、Google Nexus等,设置代码:

    caps.setCapability("deviceName", "Nexus 5");

    或者用java-client设置方式:

    caps.setCapability(MobileCapabilityType.DEVICE_NAME,"Nexus 5");

     

    ·app

    苹果app或者安卓app的路径,可以是本地的绝对路径,也可以是远程网络路径,只要有访问权限即可。根据这个app capabilities,Appium会在启动测试之前安装好app到设备。在测试安卓的时候,appPackage 和appActivity也需要设置,和app搭配使用。appPackage 和appActivity是安卓独有的capabilities,在5.3小节会讲解这两个capabilities。

    设置方式:

    caps.setCapability("app","/apps/demo/demo.apk 或者 http://app.com/app.ipa");

    Java-client设置方式:

    caps.setCapability(MobileCapabilityType.APP,"/apps/demo/demo.apk 或者http://app.com/app.ipa")

     

    ·browserName

    如果你想测试web app,那么你就需要定义browserName。对于Android来说,你可能会一定chrome浏览器,设置代码:

    caps.setCapability("browserName", "Chrome");

    或者使用java-client的设置方式:

    caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Chrome");

    对于iOS来说你可能要定义Safari浏览器

     

    ·newCommandTimeout

    为了结束appium会话(session),appium会设置一个等待从客户端发送命令超时的时间。默认时间是60秒,如果你不进行设置,如果你需要设置,代码如下:

    caps.setCapability("newCommandTimeout", "30");

    当然你可以使用java-client提供的方法设置:

    caps.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT,"30");

    一般来说这个不用设置,保持默认即可。

    ·autoLaunch

    设置设个capability,会自动安装app并且启动app。设置代码为:

    caps.setCapability("autoLaunch","false");

     

    ·autoWebview

    如果你测试的是混合应用并且想直接进入webview内容中,那么你需要设置设置这个capability的值为true,代码如下:

    caps.setCapability("autoWebview", "true");

    更多的capabilities可以参考这里:

    https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md

     

    3.Android独有Capabilities

     

    ·appPackage

    设置安卓app的包名的capability,告诉appium你要运行哪个app。

    设置代码为:

    caps.setCapability("appPackage", "com.android.calculator2");

    当然你还可以使用java-client提供的方法设置:

    caps.setCapability(MobileCapabilityType.APP_PACKAGE, "com.android.calculator2”);

     

    ·appActivity

    设置你想要运行的app的activity(相当于一个界面或者理解成网页),比如:LoginActivity,登录的activity,可以理解为登录界面。

    设置代码为:

    caps.setCapability("appActivity", "com.xxx.xxx.LoginActivity ");

    或者使用java-client提供的方法设置:

    caps.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.xxx.xxx.LoginActivity ");

     

    ·appWaitActivity

    设置你想要等待的android activity,设置方式为:

    caps.setCapability("appWaitActivity","com.android.calculator2.Calculator");

    或者

    caps.setCapability(MobileCapabilityType.APP_WAIT_ACTIVITY,"com.android.calculator2.Calculator”);


    ·appWaitPackage

    需要等待的app的包,设置方法:

    caps.setCapability("appWaitPackage","com.example.android.myApp");


    ·unicodeKeyboard

    是否使用unicode键盘输入,如果设置为true,那么可以输入中文和特殊字符,这个很常用,一般设置为true。设置代码为:

    caps.setCapability("unicodeKeyboard","true");


    ·resetKeyboard

    是否重置键盘为原始状态,比如你将键盘设置为了unicode键盘,当用例执行完成之后,将resetKeyboard设置为true,则键盘重置为原始状态。设置代码为:

    caps.setCapability("resetKeyboard","true");

    以上只选了几个代表性的capability,更多的capability请参考:

    https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md

  • 相关阅读:
    JAVA入门[7]-Mybatis generator(MBG)自动生成mybatis代码
    JAVA入门[6]-Mybatis简单示例
    JAVA入门[5]-初步搭建SpringMVC站点
    欠阿里云一分钱,会是什么样的后果
    IIS虚拟目录挂载文件服务器目录
    “Validation failed for one or more entities”异常的解决办法
    idapython import 'site' failed
    .Net Core 2.0 EntityFrameworkCore CodeFirst入门教程
    MVC添加Area出现“到多个与名为“Home”的控制器匹配的类型的解决方法”
    VS 2017 Git failed with a fatal error的解决办法
  • 原文地址:https://www.cnblogs.com/sundalian/p/5629429.html
Copyright © 2020-2023  润新知