uiautomator

基于appium的常用元素定位方法

醉酒当歌 提交于 2020-04-24 14:11:43
一、元素定位工具   app应用的元素使用的是控件定位,不同于web网页,web网页定位元素通常使用的是F12工具,那么在app当中我们则要借助其它的工具来辅助定位。 1.uiautomatorviewer.bat   uiautomatorviewer.bat工具在安装完ADT工具之后,位于ADT安装路径的android-sdk-windows\tools\bin目录下      双击启动即可,启动之后,在初始界面上,点击如图位置按钮可以进行截屏      截屏后即可查看各个元素,截屏后的效果:    2.appium检查器   在appium启动后的日志窗口界面,点击“启动检查器会话”,会跳转到检查器启动参数配置界面,参数配置直接将我们代码里面的启动参数搬过来就可以了。         点击启动后,会根据我们配置的应用信息,自动跳转到应用的主页面,我们就可以开始进行元素定位了:    二、常用元素定位方法   appium从selenium中继承了所有的元素定位方法,并且增加了自己的一些方法,我们先看看appium的源码:      但是从继承selenium中的定位方法中,一般只会用到id、class_name、xpath这三种方法,总结起来,appium中常用的定位方法一般有以下五种: 通过id定位:resource-id 通过class_name定位:class

APP自动化之Hybrid自动化解决方案(七)

不羁的心 提交于 2020-04-24 14:10:06
基于UIAutomator+ChromeDriver模式(UIAutomator安卓原生引擎)   原理:native(原生)部分使用UIAutomator,webview部分使用ChromeDriver,两者结合混搭,从而实现Hybrid自动化 一、第一种方案(针对可以修改源代码基础上操作) 1.准备android 4.4+ 版本以上的手机/模拟器(我安装的是:nox_setup_v6.3.0.5_full.exe) 2.让开发在app源代码中将webview调试模式打开 webview.setWebContensDebuggingEnabled( true ) 3.安装UC开发者工具(定位web页面元素信息工具) 自行百度下载 https://plus.ucweb.com/download/#DevTool 安装: 安装成功后启动: 打开页面如下: 4.模拟器或者真机连接后,打开app内嵌的webview页面或者打开百度网页版如下: 注意:1.APP必须打开webview调试模式 2.模拟器/真机必须打开开发者选项中的USB调试模式(使用adb devices检测到已连接设备) 二、 第二种方案(针对线上app无源码修改权限并且root权限手机操作) 如果是第三方线上app,一般WebView debug开关都是关闭的,这就需要借助第三方的工具,才能将debug开关打开 

Appium+python自动化(十二)- Android UIAutomator终极定位凶器(超详解)

妖精的绣舞 提交于 2020-04-24 09:27:27
简介 乍眼一看,小伙伴们觉得这部分其实在异性兄弟那里就做过介绍和分享了,其实不然,上次介绍和分享的大哥是uiautomatorviewer,是一款定位工具。今天介绍的是一个java库,提供执行自动化测试的各种API。   Android团队在4.1版本(API 16)中推出了一款全新的UI自动化测试工具UiAutomator,用来帮助开发人员更有效率的完成App的Debug工作,同时对于测试人员也是一大福音,为什么这么说呢? QA:“那个谁谁谁,我刚刚操作的时候,我发现了一个bug,你写的App打开A页面,再打开B页面有时会出现闪屏问题。(内心独白:我去,这个奇怪的问题” DEV:“嗯?还有这样的问题,麻烦你复现给我看看。(内心独白:吹牛逼,我这么牛逼,我写的App怎么会可能有bug,一定是你用的姿势不对)” QA:一段忙碌的神操作之后...“咦,怎么不出现了?(内心独白:我去,怎么搞的啊,关键时刻掉链子,你倒是快点出来,让我丢脸丢大发了)” DEV:“那你先回去吧,复现再告诉我。(内心独白:呵呵,和我心里想的一样,我写的怎么可能会有bug呢)” 几天过去了...... QA:满心欢喜状,那个谁谁谁“上次那个问题我复现了,操作给你看....我去,怎么又不出现了!(内心独白:一脸淫笑,我说有bug,你让我复现,这又回复现出来吧,刚想完。。。。。额。又看不到了,怎么搞的,气死我)”

移动端自动化openatx开源项目介绍,pytest并发测试框架结合

坚强是说给别人听的谎言 提交于 2020-04-24 07:00:40
开头 相信不少用过appium的同学,对于使用appium的一些体会与感受是否与我相似 1. appium启动服务和app程序非常慢 2. appium多线程并发需要启动多个服务 3. appium必须连接usb线进行自动化测试 所以在Testerhome这个共享氛围很好,也有不少大牛的论坛上爬文章,发现了openatx这个开源项目,直接截图github的README介绍一下项目情况 github地址:https://github.com/openatx 有兴趣的同学可以去为开源项目添砖加瓦 总结一下atx: 1. 快速启动和操作手机端 2. 基于atx-agent的http协议,通过接口调用手机上的二进制atx程序去进行手机操作,实现WiFi无线连接 3. codeskyblue 还搭建了atx-server集群管理,目前在用Python重写atxserver2,将支持跨网域连接设备和一些结构优化 4. 因无需启动多appium服务,只是通过http接口发送命令,支持大量终端同步并发操作 ATX介绍 atx架构图 安装 适用范围 Android手机 4.3+(sdk 18) 命令行CMD或Pycharm自己的venv环境中 pip install -U --pre uiautomator2 然后等待安装成功 初始化设备 手机连接上usb,运行初始化命令 python -m

移动端自动化测试-AppiumApi接口详解

一个人想着一个人 提交于 2020-04-14 09:29:05
【今日推荐】:为什么一到面试就懵逼!>>> Appium 初始化配置信息(Desired Capabilities),Desired Capabilities实际上就是一个字典,它主要用于向Appium Server提供初始化配置参数,如:想要测试的系统是Android还是IOS,测试哪款软件,软件的入口是哪里等。 这种服务关键字在网上很多,百度搜一下就有一大堆了。 定位Android的appPackage与appActivity-Windows操作系统方法 通过监控adb操作日志来找到 appPackage与appActivity, CMD下输入adb logcat | findstr Start,强制停止被测试软件,再次打开,观察logcat。 斜杠之前为 appPackage,斜杠之后为appActivity。 从此想抓那个App,就抓那个App。(logcat的日志较多,要找点击时第一个Start proc的日志。) 这种查看日志的方式比较不方便,日志一多起来,眼睛一乱什么也找不到了。所以可以使用SDK中的aapt进行抓取 SDK中下载最新的build-tools,通过aapt dump badging xxx.apk命令来查 appPackage与appActivity。 包名: 入口: 下列代码可以打开手机QQ: from appium import webdriver

appium---Activity

有些话、适合烂在心里 提交于 2020-04-13 16:00:46
【今日推荐】:为什么一到面试就懵逼!>>>   在做自动化的过程中,我们都会发现每次都要从头开始点,一直要点到最后,如果中间出现错误,就需要重现去点,这样很麻烦也很费时间,今天我们来认识一种非常简单的方法,想要测试那个页面,我们就直接跳转到哪个页面进行测试。 Activity Activity是Android系统中的四大组件之一,可以用于显示View。几乎所有的Activity都是对于用户进行交互的,如果还不懂的话,页面,我们所看到的app中的页面就属于一个Activity。其中Android四大组件有Activity,Service服务,Content Provider内容提供,BroadcastReceiver广播接收器。 言归正传,我们继续说我们的想要每次都启动到我们想要的页面,既然前面也说了,每个页面都表示一个Activity,那么我么可以通过Activity的方式来进入 获取Activity的方法 通过adb方式获取Activity # 通过adb方式获取Activity # 方法一: adb shell dumpsys activity top | findstr ACTIVITY # 方法二: adb shell dumpsys activity | findstr " mFocusedActivity " # 方法三: adb shell dumpsys

appium---Activity

∥☆過路亽.° 提交于 2020-04-13 15:01:26
【今日推荐】:为什么一到面试就懵逼!>>>   在做自动化的过程中,我们都会发现每次都要从头开始点,一直要点到最后,如果中间出现错误,就需要重现去点,这样很麻烦也很费时间,今天我们来认识一种非常简单的方法,想要测试那个页面,我们就直接跳转到哪个页面进行测试。 Activity Activity是Android系统中的四大组件之一,可以用于显示View。几乎所有的Activity都是对于用户进行交互的,如果还不懂的话,页面,我们所看到的app中的页面就属于一个Activity。其中Android四大组件有Activity,Service服务,Content Provider内容提供,BroadcastReceiver广播接收器。 言归正传,我们继续说我们的想要每次都启动到我们想要的页面,既然前面也说了,每个页面都表示一个Activity,那么我么可以通过Activity的方式来进入 获取Activity的方法 通过adb方式获取Activity # 通过adb方式获取Activity # 方法一: adb shell dumpsys activity top | findstr ACTIVITY # 方法二: adb shell dumpsys activity | findstr " mFocusedActivity " # 方法三: adb shell dumpsys

Appium学习笔记10-打开UiAutomatorViewer

自作多情 提交于 2020-04-08 17:50:19
文章目录 1打开UiAutomatorViewer 2问题及解决 2.1 打开uiautomatorviewer.bat闪退 2.2Unable to connect to adb 1打开UiAutomatorViewer 承接Appium学习笔记01的配置AndroidSDK环境变量 找到并打开C:\Program Files\android\sdk-tools\bin目录下的uiautomatorviewer.bat文件,即可调出UI Automator Viewer界面,点击左上角的第二个按钮(device screenshot),即可获取到手机当前界面,进而得到界面元素(控件)的标记信息 2问题及解决 2.1 打开uiautomatorviewer.bat闪退 打开uiautomatorviewer.bat闪退,无法调出Ui Automator Viewer界面,可能是因为JDK版本太高了,换成jdk8即可。 2.2Unable to connect to adb 若点击第二个按钮(device screenshot)出现错误:Unable to connect to adb, 可能原因一,它找不到adb命令: 编辑uiautomatorviewer.bat文件,编辑最后一行,将%prog_dir%换成adb文件所在文件夹路径即可。 #修改之前 call "%java

appium工作原理

对着背影说爱祢 提交于 2020-04-05 14:56:40
Appium工作过程 1、appium是C/S模式的,分为appium-server和appium-client; 2、appium是基于webdriver协议,添加了对移动设备自动化api的扩展,所以具有和webdriver一样的特性,比如多语言支持; 3、webdriver是基于http协议的,第一次连接会建立一个session回话,并通过post请求发送一个json告知服务端相关测试信息; 4、对于Android来说,4.2以后是基于UiAutomator框架实现查找注入事件的 5、appium服务端是node.js编写的HTTP服务器,将现有的优秀的框架进⾏了集成 Android 工作原理 1、Appium启动的时候,会创建一个http\\127.0.0.1:4723\wd\hub服务端(中转站) 2、4723端口接收client(也就是测试脚本)发来的请求,解析对应的请求 3、appium server把对应的请求发给bootstrap.jar,它是用java写的,安装在手机上的,在手机上监听4724端口,最终调用UiAutomator命令来实现操作 4、执行的结果由bootstrap返回给appium server ,appium server再把结果返回给client 之前,Appium通过 appium-android-bootstrap

[uiautomator篇] uiautoviewer 定位不到元素

前提是你 提交于 2020-03-18 05:06:28
定位工具: Uiautomatorviewer 在我们的APP中,只有这一个页面,元素无法加载出来,其它的都没有什么问题。 提示的错误: Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesn't exist! 在网上看到一种说法是系统版本低了,但是我们用的是4.3的手机来测试的,应该不会存在系统的版本问题。 谢谢大家,任何想法和线索都欢迎。。。 uiautomator在获取界面状态信息时,首先要等界面处于idle空闲状态才会做dump操作。这就是uiautomator死活拿不到动态界面信息的原因。 他这个错的原因是因为没有dump下来界面的信息保存到uidump.xml文件中,而该文件保存在/data/local/tmp下,如果没生成该文件,uiautomatorviewer就会报这个错。你可以用命令 adb shell /system/bin/uiautomator dump /data/local/tmp/uidump.xml 后,去/data/local/tmp目录下找找该文件。一般出现这种状况有2种情况。 1.动态界面,10s钟过后,还无法处于idle。 2.有另外一个uiautomator service 已经启动