Appium For Android and IOS By Java
来源:互联网 发布:淘宝香水嗅觉系真假 编辑:程序博客网 时间:2024/05/21 17:23
目录:
- 前言
- 项目介绍
- 项目结构
- 如何编写一个Case
- Android Example
- IOS Example
- 总结
一. 前言
自动化测试趋势近几年也越来越火了,在APP泛滥的时代,对APP进行自动化测试也备受测试人员追捧,我也不例外。
二. 项目介绍
项目名称:YYAPPAutomation
名称介绍:有鱼股票APP自动化
项目功能:对有鱼股票APP Android版本和IOS版本进行自动化测试
项目依赖:APPIUM(http://appium.io/)
项目框架:Java + Maven + Testng + Python脚本
三. 项目结构
文件目录介绍:
- apps文件夹:安放Android apk和IOS ipa
- python文件夹: 安放Python文件,用shell调用python进行安装apk或ipa文件、注册脚本、检查是否注册脚本等
- resources-android文件夹:安放Android testng xml
- resources-ios文件夹:安放IOS testng xml
- screenshot文件夹: 安放失败截图.jpg
- src文件夹: 测试代码
- target文件夹:
- test-output文件夹:安放测试报告
测试代码:
文件目录介绍:
- debug文件夹:编写调试代码
- flow文件夹:编写测试场景
- listener文件夹:编写监听器,如:重写测试报告、单个Case执行失败后会进行retry,进行重试的次数可配置
- page文件夹:编写单个页面所有元素,即获取元素
- service文件夹:编写单个页面所有元素的相关事件,如:点击、获取元素显示文字
- testcase文件夹:编写测试用例
- util文件夹:公共文件夹,编写静态方法,如:获取appium连接、shell脚本执行、正则匹配APP显示数据的正确性等
EX. Page文件夹:
获取Appium连接:
/*** 连接APPIUM SERVER* * @param url* @param port* @param propertyFileName* @return* @throws MalformedURLException*/@SuppressWarnings("rawtypes")public static AppiumDriver getDriver(String url, String port, String device, String udid, String env) throws MalformedURLException { File classpathRoot = new File(System.getProperty("user.dir")); DesiredCapabilities capabilities = null; if (device.equals("ios")) { File propertyFile = new File(classpathRoot.getAbsolutePath() + "//resources-ios/based.properties"); capabilities = getBasedCapabilities(propertyFile); if(env.equalsIgnoreCase("beta")) { capabilities.setCapability("app", classpathRoot.getAbsolutePath() + "//apps//RuiFuTech_Beta.ipa"); } if(env.equalsIgnoreCase("live")) { capabilities.setCapability("app", classpathRoot.getAbsolutePath() + "//apps//RuiFuTech_Live.ipa"); } return new IOSDriver(new URL("http://" + url + ":" + port + "/wd/hub"), capabilities); }else if (device.equals("android")) { capabilities = getBasedCapabilities(new File(classpathRoot, "//resources-android//based.properties")); if(env.equalsIgnoreCase("beta")) { packageName = capabilities.getCapability("appPackage").toString() + ".debug"; capabilities.setCapability("appPackage", packageName); capabilities.setCapability("app", classpathRoot.getAbsolutePath() + "//apps//RuiFuTech_Beta.apk"); } if(env.equalsIgnoreCase("live")) { packageName = capabilities.getCapability("appPackage").toString(); capabilities.setCapability("app", classpathRoot.getAbsolutePath() + "//apps//RuiFuTech_Live.apk"); } capabilities.setCapability("udid", udid); return new AndroidDriver(new URL("http://" + url + ":" + port + "/wd/hub"), capabilities); }else { return null; } }
查看一下Android的based.properties
platformName=AndroidplatformVersion=4.4.2deviceName=5LM0216111012735appPackage=com.ruifusoft.finance.appappActivity=com.ruifusoft.ui.SplashActivityunicodeKeyboard=trueresetKeyboard=true
查看一下IOS的based.properties
appium-version=1.0platformName=iOSplatformVersion=9.3deviceName=iPhone 5s
四. 如何编写一个Case
第一步:开启Appium Android服务
第二步:Android开启android-sdk tool下的uiautomatorviewer进行抓取元素(resourceId形式)/IOS开启Appium inspector进行抓取元素(Xpath形式)
第三步:将抓取的元素写入Page文件夹相应地方
第四步:在Service文件夹相应创建对应Page的service文件,对元素进行点击事件编写和获取文字编写,输入框数据文字方法编写等
第五步:在Flow文件夹创建测试场景,如:注册测试场景 registerFlow,将注册相关联的页面进行调用Service层的方法进行测试场景构建
第六步:在TestCase文件夹创建相应的测试用例,调用写好的registerFlow
五. Android Example
备注:待续…
六. IOS Example
备注:待续…
七. 总结
“路漫漫其修远兮 吾将上下而求索”自动化APP测试尚未技术成熟,在写APP自动化的过程中也发现了很多难处(如:测试场景无法全部覆盖,一些case需要和外部提供数据进行联调测试、自动化测试场景写多了执行的时间会越来越长、Android机型过多,对于自动化代码需要编写适配、IOS是每对一个元素进行操作就获取一次整个页面数据,导致某个页面数据过多的页面,下面的页面无法很多的获取到,甚至有时候获取不到导致case失败)需要一个一个的测试人员去探索发现解决方案,分享出来,从而提高自动化测试技术的发展。
整个项目文档:百度网盘
欢迎加QQ群 -> 阳台测试 -> 239547991(群号)
- Appium For Android and IOS By Java
- Appium Wrapper for Java
- Appium for java API
- Appium Wrapper for Java
- Java + testng +maven + appium for IOS 自动化测试
- Appium - Android 对比 iOS
- Appium_Automators' Cafe Appium android example program for windows using java
- Android自动化测试appium for java环境搭建实操
- Appium :Windows 平台上的使用 Java 语言实现 appium 自动化程序 for Android
- Appium+Android+Java
- Appium + android + java + 实例
- BES10 Client for Android and iOS
- Mono For Android And IOS 安装方法
- strongswan 搭建ikev1 for Android and iOS
- strongswan 配置ikev2 for iOS and Android
- Lottie for Android, iOS, and React Native
- Appium problems for IOS real devices
- appium for android 查找元素方法总结
- 数据结构示例之用链表实现栈
- Linux命令之"df"
- 将一个链表中结点的值按奇偶拆分,使其中一个链表结点的值为偶数,另一个为奇数
- canvas学习笔记(一)——关于css设置canvas画布大小的问题
- 逻辑回归
- Appium For Android and IOS By Java
- 微信的开发之初学问题总结
- Java_socket通信基础补充
- Windows10专业版任务栏右下角按钮左键无效右键有效的问题的解决
- 芒果TV发布2017黄金IP“芒果练习生”计划
- IntelliJ IDEA 2016
- POJ1003 二分_查找/自定义zero()函数
- 操作系统之磁盘调度算法
- Linux命令之"gzip"