内容提要
承接上文,之前安装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 , --address | 0.0.0.0 | 监听的 ip 地址。注意在图形化界面上默认值为 127.0.0.1 | --address 0.0.0.0 |
-p , --port | 4723 | 监听的端口。需要启动多个 appium server 进行并行测试时需要保证每个 server 的监听端口不一样。 | --port 4723 |
--log-timestamp | false | 在日志输出里显示时间戳 | |
--local-timezone | false | 在日志输出的时间戳使用本地时间 | |
-g , --log | null | 将日志输出到指定文件 | --log /path/to/appium.log |
--session-override | false | 允许 session 被覆盖 (冲突的话) | |
--command-timeout | 60 | 默认所有会话的接收命令超时时间 (在超时时间内没有接收到新命令,自动关闭会话)。 会被新的超时时间覆盖 |
这些参数同时也可以在图形化界面上配置:
使用图形化界面的同学请参照下图修改你们界面的配置。它等价于上面命令行里的添加
如下命令,启动 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");
}
}
执行脚本三部曲
-
连接设备 ,通过adb devices 验证
-
启动 Appium server
-
eclipse 右键 run as testng test
The End
小提示
本文大致介绍了Appium简单设置和第一个脚本的demo,如果你对此感兴趣,可以去了解一下Android adb常见命令和Android UIAutomationView 工具来定位element。快去试一下吧!
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….