1、Appium的简介和原理
appium是一款开源的,跨平台的UI自动化测试工具,适用于测试原生的或者混合型的移动APP,支持IOS,Android,Firefox OS等平台,同时该框架支持JAVA,Python,PHP等语言编写的测试脚本。
client端也就是我们 test script,即selenium(webdriver)测试脚本。
- 中间是Appium服务,Appium启动一个Server(4723端口),它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调用对应的框架响应操作。
- appium server会把请求转发给中间件Bootstrap.jar (它是用java写的,安装在手机上)Bootstrap监听4724端口并接收appium 的命令,最终通过调用UiAutomator的命令来实现。
- 最后Bootstrap将执行的结果返回给appium server。
- appium server再将结果返回给客户端。
2、Appium测试环境搭建
直接下一步,直接到位
3、脚本开发基本步骤
一.脚本开发基本步骤:(熟练掌握)
DesiredCapabilities类:提供了一些key value的对象,它告诉appium server这样一些事情
- *需要测试的平台是什么:“platformName”–android\ios\firefoxos
- *需要测试的设备名(序列号)是什么:“deviceName”–“Android Emulator”
- *需要测试的平台版是:“platformVersion”–“4.4.4”
- *需要测试的应用程序(包及首页activity)
- *设备上app是否需要重复安装“noReset”----true *appPackage—com.mini.calc–包名
- *appActivity—com.stub.stub01.Stub01–活动页
DesiredCapabilities des=new DesiredCapabilities();
des.setCapability("platformName":"android");
des.setCapability("deviceName":"Android Emulator");
获取DesiredCapabilities参数方法:
- 平台就android\ios\firefoxos
- 获取设备名:就填它,“Android Emulator”
- 获取包名和首页:
(1).使用aapt工具,查看针对有apk安装包的情况,aapt工具在
hrE:\ADT-bundle-windows-x86_64-20140321\adt-bundle-windows-x86_64-20140321\sdk\build-tools\android-4.4.2
如:aapt dump badging d:\test.apk
## (2).使用adb查看,要先打开app,然后输入以下命令:
adb shell dumpsys window w | findstr mCurrent
(3).需要测试的平台版本号:
adb shell getprop ro.build.version.release
二.AppiumDriver类创建appuim对象,需要在main函数的()旁边加上异常处理
throws MalformedURLException, InterruptedException
AppiumDriver driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),des);
注意:/wd/hub是规则的写法
设置等待
有些地方不设置没反应过来会定位不到元素就会报出错误
driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
4、定位控件,截图定位元素
定位控件
appium 通过 uiautomatorviewer.bat 工具来查看控件的属性。该工具位于 Android SDK 的 /tools/ 目录下。
如:E:\ADT-bundle-windows-x86_64-20140321\adt-bundle-windows-x86_64-20140321\sdk\tools
注意:使用前要先打开模拟器,然后打开模拟器中的app,通过uiautomatorviewer.bat中的截图
package haha;
import io.appium.java_client.AppiumDriver;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.remote.DesiredCapabilities;
public class Test01 {
public static void main(String[] args)throws MalformedURLException, InterruptedException {
// TODO 自动生成的方法存根
DesiredCapabilities des=new DesiredCapabilities();
des.setCapability("platformName","android");//平台
des.setCapability("deviceName","Android Emulator");//设备名称
des.setCapability("platformVersion","4.4.4");//版本号
des.setCapability("noReset","true");//不要重复安装
des.setCapability("appPackage","com.tencent.mobileqq");//包名
Thread.sleep(3000);//3秒
//活动页
des.setCapability("appActivity","com.tencent.mobileqq.activity.LoginActivity");
Thread.sleep(7000);//7秒
//创建连接appium的对象
AppiumDriver dr = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),des);
}
}