Appium入门自动化测试(2) —— Appium 第一个脚本

内容提要

承接上文,之前安装Appium都完成了么? 如果你已经完成了Appium的安装,那么就可以继续今天的内容。这次我们了解一下Appium server的常用参数和开发第一个Appium自动化脚本。这次我们以Android为例,使用Appium 1.5.3 GUI版进行讲解。阅读此文需要3-5 min ,需要一定java基础。

Appium 第一个脚本

IDE 配置

如果使用使用eclipse,请根据你的系统下载。

当完成IDE配置,需要添加Appium client 的jar包

下载Appium client

 目前最新的java-client 是4.12 ,可以在这里下载:http://mvnrepository.com/artifact/io.appium/java-client/4.1.2

下载依赖包(selenium standalone server 2.53.1)

目前java-client包的依赖是selenium-java 2.53.1,如果selenium官网打不开,可以去淘宝镜像下载:https://npm.taobao.org/mirrors/selenium

提示

本系列教程将采用testng ,所以需要你的安装IDE配置testng plugin

在eclipse这样设置:

Appium Server 常用参数设置

启动Appium server

Appium server 有两种启动方式,一种是通过npm命令行安装的直接通过命令行启动,另外一种是通过Appium GUI启动。本文主要讲解通过GUI启动Appium

Appium / 从GUI启动

这个就简单多了。只需要点击一个按钮。

Windows:

MacOS:

Appium/ 命令行启动

Appium/ 常用参数设置

前面讲述的是采用默认参数启动 appium server 。但实际使用中默认参数并不总能满足我们需要,因此我们需要手动配置这些参数。

由于时间关系,我们只讲述最常用的几个参数。若希望了解所有参数,可以查阅 appium 官方文档

标志默认值描述例子
-a--address0.0.0.0监听的 ip 地址。注意在图形化界面上默认值为 127.0.0.1--address 0.0.0.0
-p--port4723监听的端口。需要启动多个 appium server 进行并行测试时需要保证每个 server 的监听端口不一样。--port 4723
--log-timestampfalse在日志输出里显示时间戳
--local-timezonefalse在日志输出的时间戳使用本地时间
-g--lognull将日志输出到指定文件--log /path/to/appium.log
--session-overridefalse允许 session 被覆盖 (冲突的话)
--command-timeout60默认所有会话的接收命令超时时间 (在超时时间内没有接收到新命令,自动关闭会话)。 会被新的超时时间覆盖

这些参数同时也可以在图形化界面上配置:

使用图形化界面的同学请参照下图修改你们界面的配置。它等价于上面命令行里的添加

如下命令,启动 appium server :

$ appium --address 127.0.0.1 --port 4723 --log "~\appium.log" --log-timestamp --local-timezone --session-override

完成之后就可以编写脚本,开始第一Appium自动化测试脚本

下载Demo APK

首先下载一个demo APK:

https://github.com/tobecrazy/appiumDemo/blob/master/apps/apppiumDemo.apk

接下来编写测试脚本:

package main.java.com.dbyl.appiumCore.tests;

import org.openqa.selenium.remote.CapabilityType;

import org.openqa.selenium.remote.DesiredCapabilities;

import org.testng.Assert;

import org.testng.annotations.Test;

import io.appium.java_client.MobileElement;

import io.appium.java_client.android.AndroidDriver;

import io.appium.java_client.remote.AndroidMobileCapabilityType;

import io.appium.java_client.remote.AutomationName;

import io.appium.java_client.remote.MobileCapabilityType;

import java.io.File;

import java.net.URL;

/**

 * @since 2016-10-17

 * @author Young

 */

public class AppDemoForJava {

private AndroidDriver<MobileElement> driver;

@Test

public void Demo() throws Exception {

// set up appium

DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.APPIUM);

//for native app set null, for web test please set chrome or firefox 

capabilities.setCapability(CapabilityType.BROWSER_NAME, "");

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

capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");

//simulator version 4.4

capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");

// if no need install don't add this

File classpathRoot = new File(System.getProperty("user.dir"));

File appDir = new File(classpathRoot, "apps");

File app = new File(appDir, "apppiumDemo.apk");

capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());

//package name 

capabilities.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, "cn.dbyl.appiumdemo");

// // support Chinese

capabilities.setCapability("unicodeKeyboard", "True");

capabilities.setCapability("resetKeyboard", "True");

// no need sign

capabilities.setCapability("noSign", "True");

//launcher activity

capabilities.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, ".MainActivity");

String url = "http://localhost:4723/wd/hub";

driver = new AndroidDriver<MobileElement>(new URL(url), capabilities);

MobileElement text = driver.findElementById("cn.dbyl.appiumdemo:id/text1");

Assert.assertEquals(text.getText(), "appiumDemo");

MobileElement button = driver.findElementByClassName("android.widget.Button");

button.click();

text = driver.findElementById("cn.dbyl.appiumdemo:id/text1");

Assert.assertEquals(text.getText(), "You just click the button");

}

}

执行脚本三部曲

  1.  连接设备 ,通过adb devices 验证

  2.  启动 Appium server

  3.   eclipse 右键 run as testng test

The End

小提示

本文大致介绍了Appium简单设置和第一个脚本的demo,如果你对此感兴趣,可以去了解一下Android adb常见命令和Android UIAutomationView 工具来定位element。快去试一下吧!


最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值