uiautomator

Appium的详细介绍

大憨熊 提交于 2020-03-10 09:56:59
1、Appium 是什么? Appium是一个开源的,适用于原生或混合移动应用( hybrid mobile apps )的自动化测试工具,Appium应用WebDriver: JSON wire protocol驱动安卓和iOS移动应用。 2、Appium的特点: 支持多平台(Android、iOS等) 支持多语言(python、java、ruby、js、c#等) Appium是跨平台的,可以用在OSX,Windows以及Linux桌面系统上运行。 Appium选择了Client/Server的设计模式。只要client能够发送http请求给server,那么的话client用什么语言来实现都是可以的,这就是如何做到支持多语言的原因; Appium扩展了WebDriver的协议,没有自己重新去实现一套。这样的好处是以前的WebDriver API能够直接被继承过来,以前的Selenium(WebDriver)各种语言的binding都可以拿来就用,省去了为每种语言开发一个client的工作量。 3、Appium的哲学: 不需要重新编译或者修改应用 不被一种语言或者框架约束 不重复造轮子 开源免费 4、Appium原理: Appium是c/s架构的 ; Appium是基于webdriver协议添加了对移动设备自动化api扩展而成的, webdriver是基于http协议的

App自动化01-Appium概述

梦想的初衷 提交于 2020-03-03 11:42:36
Appium简介 Appium是一个开源、跨平台的测试工具,可以用来测试原生及混合的移动端应用。Appium支持IOS、Android及Windows 平台。Appium使用WebDriver的json wire协议,来驱动IOS系统的UIAutomation库、Android系统的UIAutomator框架。它允许测试人员在不同的平台(iOS,Android)使用同一套API来写自动化测试脚本,这样大大增加了iOS和Android测试套件间代码的复用性。下面的是为其官网上面的介绍: Appium is an open-source tool you can use to automate mobile native, mobile web, and mobile hybrid applications on iOS and Android platforms. “Mobile native apps” are those written using the iOS or Android SDKs. “Mobile web apps” are web apps accessed using a mobile browser (Appium supports Safari on iOS and Chrome on Android). “Mobile hybrid apps” have

微信小程序的自动化测试框架

时光怂恿深爱的人放手 提交于 2020-02-26 14:32:51
微信发布了小程序的自动化测试框架Minium,提供了多种运行验证方式,其特点: 支持一套脚本,iOS & Android & 模拟器,三端运行 提供丰富的页面跳转方式,看不到也能去得到 可以获取和设置小程序页面数据,让测试不止点点点 可以直接触发小程序元素绑定事件 支持往 AppSerive 注入代码片段 可以调用部分 wx 对象上的接口 官方地址如下: https://git.weixin.qq.com/minitest/minium-doc/tree/master minium 是为小程序专门开发的自动化框架, 提供了 Python 和 JavaScript 版本。使用 minium 可以进行小程序 UI 自动化测试, 但是 minium 的功能不止于仅仅是 UI 自动化, 甚至可以使用 minium 来进行函数的 mock, 可以直接跳转到小程序某个页面并设置页面数据, 做针对性的全面测试, 这些都得益于我们开放了部分小程序 API 的能力。除此之外,小程序有部分组件使用了系统原生的组件,对于这部分的组件,我们也基于 uiautomator 和 wda 做了补充。 环境依赖 Python 3.x 微信公共库版本 >= 2.7.3 下载并安装稳定版微信开发者工具,工具下载地址: https://developers.weixin.qq.com/miniprogram/dev

Android odex文件反编译

送分小仙女□ 提交于 2020-02-24 23:23:49
odex 是经过优化的dex文件,且独立存在于apk文件。odex 多用于系统预制应用或服务。通过将apk中的dex文件进行 odex,可以加载 apk 的启动速度,同时减小空间的占用。请参考 ODEX 关于 odex 的说明。 在反编译 odex 文件的过程中,我们需要使用到以下工具 smali/baksmali dex2jar JD Compiler, jar反编译工具 smali/baksmali 是odex与dex文件格式互相转换的两个工具, dex2jar 则是将dex文件转为java的jar文件, JD Compiler 用于反编译jar文件。也就是说,经过以上一系列的操作,我们最终可以从一个odex文件得到一个可读的java文件。(事实上,也不是完全可读,与源码上还是有差别,有时候部分代码还无法反编译过来,只能以jdk虚拟机指令的方式存在了)。 首先,一个 odex 文件的生成过程是:java -> class -> dex -> odex,那么反编译的就是上面过程的逆操作了:odex -> dex -> class -> java。 我的测试环境: Android 4.1.2 Samsung Galaxy II 以Android系统中的 uiautomator.odex 文件为例,目标是反编译其源码(其实它的源码 grepcode ). 工具准备

appium的log详细分析

孤街醉人 提交于 2020-01-16 23:55:48
下面介绍appium日志的大概分析 //启动appium服务成功 2017-03-24 11:22:49:218 - info: [Appium] Welcome to Appium v1.6.3 2017-03-24 11:22:49:221 - info: [Appium] Non-default server args: 2017-03-24 11:22:49:222 - info: [Appium] log: 'C:\\Users\\LXG\\Desktop\\appium.log' 2017-03-24 11:22:49:270 - info: [Appium] Appium REST http interface listener started on 0.0.0.0:4723 //收到从脚本传递的post请求,将desiredCapabilities参数全部传递给服务端 2017-03-24 11:23:57:842 - info: [HTTP] --> POST /wd/hub/session {"capabilities":{"desiredCapabilities":{"app":"C:\\Users\\LXG\\Desktop\ \zhihunew1.apk","noSign":true,"newCommandTimeout":600,

FAutoTest-微信小程序 / 公众号H5 自动化利器

女生的网名这么多〃 提交于 2020-01-16 23:42:30
X5内核H5自动化背景 近来有很多童靴咨询如何做微信小程序/公众号等H5页面来做自动化,之前写了一篇文章微信小程序自动化测试实践 https://www.cnblogs.com/yyoba/p/9455519.html/ 其中的工具是用appium来做。但是微信小程序/公众号这种H5页面是用微信自家X5内核来渲染的,appium对其支持的并不是非常理想,通过ChromeOption定制X5内核的进程运行时其稳定性不尽如人意,最近有关注到腾讯自家开源了专门做微信小程序/公众号H5页面自动化的框架,所以给各位小伙伴们唠叨唠叨。 FAutoTest FAutoTest是腾讯自家开发来做微信H5页面的自动测试框架,既然企鹅能将其开源,说明这个框架应该是经过其内部验证实践的。我们可以从GitHub上找到这个开源项目地址 https://github.com/Tencent/FAutoTest/ 框架的介绍和使用需要的环境官方网址已经介绍的非常详细了(对于英文犯晕的同学友好度max),这里就不多做介绍。 还要再重点强调一遍,必须要打开微信的内核debug模式,怎么打开可以参考我之前的微信小程序自动化测试实践这篇blog。之前是写的微信小程序实践,那这篇就拿公众号来试下水。 FAutoTest实践 工具选型 官方有对其介绍:框架内打包了 Python 版本的 UIAutomator,方便在安卓

Uiautomator报错:Unexpected error while obtaining UI hirerarchy

孤街醉人 提交于 2020-01-01 04:34:32
该错误的原因是android 8.0以上的版本不适用 解决办法如下: 1.可以使用automatorview导入文件的方式 2.截取uix文件 adb shell uiautomator dump /sdcard/screen.uix 截取文件 3.截取当前设备也就是连接手机的话就是当前手机页面 adb shell screencap -p /sdcard/screen.png 4.打开sdk---》tools下的uiaotomator 5.点击文件图标,将uix和png都导入到工具中【图片和文件在设备的文件管理器里边找,然后拷贝到电脑上导入就行了,也可以用adb pull命令pull到电脑上】 ,则会出现下边的界面,成功文件显示,也可以在右边查看其id等信息 备注:【网络和互联网】忽略,是当时在设备上选中的,不做操作 来源: CSDN 作者: 一腔曦意 链接: https://blog.csdn.net/W_C_X/article/details/103765465

Appium api函数 基于python

ε祈祈猫儿з 提交于 2019-12-26 18:06:27
查询函数 1. findElement(s)ByName 在 Android 中基本没用。Android UI 没有 Name 这个属性。有说可以使用 text 值获取。但我并没有成功 2. findElement(s)ByClassName 通过类名来获取元素,用法如下: item_list = dr.find_elements_by_class_name("android.widget.LinearLayout") item_list[2].click() 3. findElementById 通过 resource_id 来获取元素,每个 Activity 中都是唯一的,用法如下 t = dr.find_element_by_id("com.tencent.mm:id/f7") t.send_keys(wechatId) 4. findElement(s)ByAccessbiltiyId 在 Android 上 AccessbilityID 实际就是 contentDescription 。这个属性是为了方便视力受损人士使用手机所设置。开启 TTS 后系统会朗读相关控件的 contentDescription。 5. findElement(s)ByXPath 通过 XML Path 描述来寻找元素。我没有成功的获取到,可能是 XPath 写的有问题。 s = dr.find

appium元素定位

假装没事ソ 提交于 2019-12-19 23:41:45
通过id定位 安卓里面的id即为resource-id driver.findElementById("com.tencent.mm:id/do") 或者 WebElement element = driver.findElement(By.id("com.tencent.mm:id/do")); 通过name定位 一般text为name WebElement el = driver.findElement(By.name("昵称")); 通过classname定位 Classname即为uiautomator里面的class信息 WebElement el = driver.findElement(By.ClassName("android.widget.TextView")); 通过xpath定位 在appium中xpath定位元素,执行很慢,效率比较低,很少用 WebElement el = driver.findElement(By.xpath("//android.widget.Button[@index='1']")); 通过accessibilityID定位 在uiautomator中的content-desc信息为该定位元素 WebElement el = driver.findElementByAccessibilityId("sharebutton");

Appium定位方式总结

这一生的挚爱 提交于 2019-12-17 15:09:08
通过appium-desktop定位元素 ClassName Android Android的class属性对应ClassName定位方式,ClassName一般都是会重复的,可以通过index来获取需要的元素。(从0开始查找dom树中的同名class属性) iOS iOS的type属性对应CLassName定位方式,ClassName一般都是会重复的,可以通过index来获取需要的元素。(从0开始查找dom树中的同名class属性) ID Android Android的resource-id对应ID定位方式,这个id也可能存在重复情况,可以通过index来获取需要的元素。(从0开始查找dom树中的同名resource-id属性) 使用appium-desktop来获取元素时,如果提示有id的定位方式,则可以只接获取,代表唯一。 XPATH Android Android的Xpath定位与PC的XPATH定位大同小异,可以通过相对路径的定位方式定位,区别在于,这里相对路径定位的//后只可以接Android的class属性或*。(//android.widget.Button[@text="登 录"]) iOS iOS10 以上使用XCUITest框架后,原生框架不支持XPATH,Appium进行了转换,速度很慢不建议使用。 AccessibilityId Android