App自动化/Appium
基于appium的APP自动化测试相关
TesterAllen
理想还很远,但今天你努力了吗?学的越多,会的越少
展开
-
参数化和数据驱动在App自动化测试中的应用(基于Junit5和YAML)-01
1、何为数据驱动什么是参数化?什么又是数据驱动?经常有人会搞不明白他们的关系,浅谈一下个人的理解,先来看两个测试中最常见的场景:登录:不同的用户名,不同的密码,不同的组合都需要做登录场景的测试,正常的排列组合下可能会产生多个用例搜索:不同的搜索条件产生不同的搜索结果,搜索也是常见的测试项,单个搜索参数或者多种搜索参数的组合;同样也会产生多个用例。以上两种场景都有一个共同点,就是测...原创 2019-11-28 17:03:51 · 1366 阅读 · 4 评论 -
解决App自动化的不稳定因素-弹框及首页启动加载完成判断处理
1、“罪恶”源泉经常我们会觉得App自动化不靠谱,不稳定,其中很大的两个原因是:App启动加载时间较久(可能App本身加载慢,可能移动设备本身加载应用速度慢,也可能首页广告时间较长)。各种弹框的出现;广告弹框,升级弹框,评价弹框等。例如如下雪球App出现的几种弹框:在框架中若不对上述情况做处理就可能出现元素定位超时找不到的报错,自动化也就被打断终止了,使我们刚燃起的自动化热...原创 2019-11-18 16:02:55 · 2839 阅读 · 0 评论 -
以QQ邮箱登录为例,浅谈PageObject(PO)设计模式在UI自动化中的应用
1、认识PO1.1 PO首次提出PO的思想最早是2103年由IT大佬Martin Flower提出的:https://martinfowler.com/bliki/PageObject.html没错,就是他在他的文章里有这样一张经典样图,图片中展示了测试代码中直接操作HTML元素和使用PO模式将page对象封装成一个HTML页面,通过特定方法来操作元素的对比;如下图:1.2 PO原...原创 2019-11-05 10:48:48 · 966 阅读 · 0 评论 -
iOS自动化测试(二)-基于appium的架构原理、环境命令、定位方式
1、原理与变迁1.1 环境版本变迁先来看下面的版本对应表由上表可以得知:iOS 8.0到9.3 之间的时候一直以 instruments 下的 UIAutomation为驱动底层技术查阅资料说弊端是由于 instruments 的限制,单台 mac 只能对应单台设备,由于现在9.3之前的版本很少了,所以我在学习的时候也就忽略了这部分的内容,仅作为了解);iOS 9.3 之...原创 2019-12-19 11:08:34 · 1430 阅读 · 0 评论 -
iOS自动化测试(一)-技术方案、环境配置与疯狂踩坑
移动端的自动化测试,最常见的就是Android自动化测试,IOS相较于Android要安全稳定的多,但是IOS也是一个需要测试的方向,作为测试,不认真测一下心里还是过意不去,只是我个人觉得Android的测试优先级会更高,当然Android也更开放,更容易测试;今天这里来一起学习记录下iOS自动化测试要如何来做1、环境准备硬件环境:Macbook Pro(做iOS测试,Mac是绕不开...原创 2019-12-17 16:09:01 · 5237 阅读 · 3 评论 -
App自动化之dom结构和元素定位方式(包含滑动列表定位)
1、认识DOM结构先来看几个名词和解释:dom: Document Object Model 文档对象模型dom应用: 最早应用于html和js 的交互。界面的结构化描述, 常见的格式为html、xml。核心元素为节点和属性xpath: xml路径语言,用于xml 中的节点定位如下我们先来看一个App的dom:控件的基础知识和selenium一样,appium为移动端抽象出了一个...原创 2019-11-12 11:25:04 · 1582 阅读 · 0 评论 -
从解读Appium官网的第一段话开始敲开移动互联网自动化的大门
1、移动互联网背景随着智能手机的普及和互联网的发展,移动互联网已经渐渐成为人们的一种的生活方式;既然是生活方式,那么对生活品质就会有不断的提升要求,就会对所用的移动互联网产品有更高的体验需求,这对于我们测试工程师来说就有了更高的质量保证要求,而时间短,进度快,种类多,使得我们仅靠人工很难保证版本的测试充分,这个时候就需要借助自动化来释放人力,提升效率了。1.1 一般架构移动端:用户会通...原创 2019-11-11 17:36:54 · 394 阅读 · 0 评论 -
ubuntu系统解决中文显示及输入乱码及报错问题-AppCrawler运行环境引发unacceptable code point reader (0x1B) special characters等问题
AppCrawler做自动遍历测试时,我是在Windows上的ubuntu子系统启动的,配置好yml文件,保存-查看-启动运行时会遇到无法保存,就算强制保存后也是无法正常查看,运行时更是会报cat: write error: Input/output errorException in thread “main” java.nio.charset.MalformedInputExceptio...原创 2019-07-26 16:55:48 · 1638 阅读 · 0 评论 -
appium/web自动化测试-如何利用xpath进行兄弟节点的定位(基于following-sibling)
UI自动化测试中,有时候会遇到一个界面上有多同类型控件,这些控件有相同的id或属性,不具备唯一性,所以无法直接进行指定控件的定位操作,如下:由上图可以看到,所有勾选控件的结构是一样的,相对位置是固定的,而勾选控件相对它们的"哥哥"节点的TextView是不同的:这样就可以先定位至"哥哥"节点,在根据相对位置,定位到指定的控件节点xpath参考地址:https://www.runoob....原创 2019-07-25 11:01:44 · 2255 阅读 · 0 评论 -
appium测试,如何定位横屏显示的软件的两种方法(appium-client和uiautomatorView)
做APP自动化的时候,有时候有的APP是横屏显示的,这个时候需要对界面进行定位元素分析有以下两种方法:一. 利用appium-client进行定位分析这种方法的优点: 直接横屏显示,可不做处理直接操作缺点: 1.显示太小,不方便观察操作. 2.实际工作中不会用appium-client去启动appium-server,而用此方法调试时就必须额外启动一个appium-server且经常...原创 2019-07-20 20:21:49 · 1628 阅读 · 2 评论 -
appium测试-操作Android非原生View(自定义)控件(如部分日期和地点选择下拉控件),基于JavaCV的图像匹配方法
appium测试中,经常遇见下拉选择控件,对于ListView类型的可以直接调用AndroidUIAutomator方法来进行定位具体方法可参考另一篇博客:appium测试-如何滑屏定位指定元素(Android)以及定位失败解决方法但是有时候会遇见非原生的View控件,如下情况:无法定位获取控件内部选项的任何信息,也就无法用常规的id或xpath的方式去进行定位操作了第一种比较"...原创 2019-07-24 23:52:27 · 2605 阅读 · 4 评论 -
appium测试,如何模拟多指操作屏幕图片等进行放大缩放的zoom功能(Android,Java)
想要对图片进行zoom功能,手指操作很灵活,可是用appium实现起来很不容易,在appium官网上有个MultiTouch的伪代码,尝试后发现未达到期望效果,操作会分步执行,造成图片仅仅做单方向移动;于是乎继续查找,发现国外一位前辈写的一个方法,大概的原理是利用角度和弧度作为手指运动轨迹,分别将不同手指的轨迹保存至集合返回,然后设定运动时间和等待,完成zoom操作;细节上大家有能力和精力...原创 2019-07-23 16:26:23 · 1617 阅读 · 0 评论 -
appium测试-如何模拟拖动屏幕下拉操作(TouchAction)--可适用于模拟常见手指滑动操作
在appium的官方文档中https://github.com/appium/appium/blob/8c15ac66f18659974c31019ba1cdcd09cb25a275/docs/en/writing-running-appium/touch-actions.md有TouchAction的介绍,可以利用此API来完成下拉操作:从上述伪代码中可以看到,利用TouchActio...原创 2019-07-11 10:31:25 · 5055 阅读 · 1 评论 -
appium测试-如何在输入框中输入中文(Android)
环境:系统:Win10Appium版本: 1.13.0JDK版本:1.8.0_144现象:Appium测试时,默认是无法输入中文的解决办法:查找appium官网的Appium Desired Capabilitieshttps://appium.io/docs/en/writing-running-appium/caps/#android-only发现如下两个Capabiliti...原创 2019-06-28 10:32:41 · 2552 阅读 · 0 评论 -
WebElement,MobileElement,AndroidElement之间的区别
AndroidElement——查看AndroidElement部分源代码:public class AndroidElement extends MobileElement implements FindsByAndroidUIAutomator<MobileElement> 发现AndroidElement继承与MobileElement并实现了FindsByAnd...原创 2019-07-03 16:01:41 · 1330 阅读 · 0 评论 -
appium测试-获取appPackage和appActivity以及如何验证获取是否正确
使用appium做自动化测试,需要两个重要的APP参数,就是“appPackage”和“appActivity”:import io.appium.java_client.AppiumDriver;import io.appium.java_client.MobileBy;import org.junit.After;import org.junit.AfterClass;import ...原创 2019-06-25 10:31:55 · 1219 阅读 · 0 评论 -
aapt命令安装,Unable to locate package aapt解决办法及利用其查看APK开发环境、支持架构等信息
利用"aapt list apk(名字)",命令可以查看apk的信息,如果未安装,则可能会提示使用"sudo apt install aapt"命令进行安装;照提示进行安装发现突发安装aapt的包,这个时候可以使用"sudo apt-get update"命令解决:更新安装完成后可通过“aapt --help 2>&1 |less"查看帮助:再使用"aapt list apk...原创 2019-06-23 23:25:10 · 2027 阅读 · 0 评论 -
appium启动报错An unknown server-side error occurred while processing the command.
使用appium-desktop,设置好参数,“start session”时报错:ErrorAn unknown server-side error occurred while processing the command. Original error: Could not find 'adb.exe' in ["C:\\Users\\QinZhen\\AppData\\Local\...原创 2019-06-24 00:10:40 · 52917 阅读 · 30 评论 -
appium测试-如何滑屏定位指定元素(Android)以及定位失败解决方法
这里利用模拟器中的API Demo做演示,进入APIDemo中Views,然后滑屏寻找“Popup Menu”进行点击操作可以利用Android的UIAutomator进行滑屏操作,这时候需要使用AndroidDriver,另外定位元素可以使用UiScrollable:driver.findElementByXPath("//*[@text='Views']").click();((A...原创 2019-07-02 16:22:50 · 5170 阅读 · 4 评论 -
appium测试-如何获取Toast弹框消息(Android )
在APP中,一些点击或下拉等操作会出现弹框消息,这种消息属于Android系统自带的Toast,在Appium自动化测试中有时候需要获取Toast消息来进行断言这里以模拟器中APIDemo中的例子做演示,在APIDemo->Views->Popup Menu中选择点击Search,出现Toast弹框消息:代码演示:与安卓开发工程师沟通得知,Toast在弹出的时候会在当前界面出现...原创 2019-07-02 16:52:44 · 7016 阅读 · 6 评论 -
appium测试-如何定位WebView进行测试
appium测试中,APP中有时候有H5页面,如何对其中的WebView进行测试;这里以模拟器中APIDemo中的例子做演示,在APIDemo->Views->WebView中选择点击WebView元素第一种方法:如果有AccessibilityId就可以直接根据其来获取driver.findElementByAccessibilityId("Hello World! - 1")....原创 2019-07-02 18:24:29 · 2237 阅读 · 0 评论 -
自动化测试用例如何进行参数化和利用CSV、yaml文件等进行数据文件驱动(基于Junit5 @CSVSource、@MethodSource等)
Junit5官方说明地址:https://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests参数化如官网所述,我们可以利用@ParameterizedTest+@ValueSource或@CsvSource进行参数化设置参数化实例:以雪球APP股票搜索功能为例 @Par...原创 2019-07-08 15:56:38 · 8382 阅读 · 5 评论 -
InvalidSelectorException: Locator Strategy 'css selector' is not supported for this session
Appium运行报错InvalidSelectorException: Locator Strategy ‘css selector’ is not supported for this session一般都是Appium的版本不匹配造成,更新为最新版本即可,我将java-client更新为最新版本后问题解决 <dependency> <groupI...原创 2019-06-27 16:56:11 · 3360 阅读 · 0 评论 -
appium测试-从源码来看隐式等待与显示等待的真正区别和使用场景
做自动化,隐式等待和显示等待是最常用的了,网上一搜也一大堆,但是答案几乎都是一样的,如下:隐式等待:设置一个超时时间,在这个时间内会去不断寻找元素,超时找不到时就会报错;driver.manage().timeouts().implicitlyWait(6, TimeUnit.SECONDS);显示等待:设置一个超时时间和一个元素查找条件,在这个时间内不断寻找这个元素,超时找不到时就会报错...原创 2019-07-03 14:37:08 · 3214 阅读 · 6 评论 -
AppiumDriver、AndroidDriver、RemoWebDriver、WebDriver、ChromeDrvier的区别
AndroidDriver——查看AndroidDriver部分源码:public class AndroidDriver<T extends WebElement> extends AppiumDriver<T> implements PressesKey, HasNetworkConnection, PushesFiles, StartsActivit...原创 2019-07-03 15:30:47 · 2296 阅读 · 3 评论 -
Windows(Win10)、Mac下安装appium,亲测!
1、访问appium的官网http://appium.io/,拉倒底部查看下载appium的安装方式,其实只有两步(如下图红框中):第一步让你用brew install node命令先安装node.js的环境(因为appium是用node.js写的)第二步直接使用npm install -g appium安装即可* 注意:1、官网首页会有个“Download Appium”按钮,这个其实...原创 2019-06-17 10:06:36 · 2771 阅读 · 3 评论