Appium适配Android7.0以上版本
Appium适配Android7.0以上版本
- 测试机型: 华为荣耀V9
- 安卓版本: Android7.0
- appium版本: 1.65
说明:
公司新采购了一批安卓机器,拿了其中一台华为荣耀V9跑之前写的测试用例,发现每次登陆以后进入到MainActivity了之后,元素就获取不到了,试了一下driver.page_source也是报了超时。本能反应是Android7.0的问题,于是去testerhome搜了巨多安卓7.0的东东。找到了一些头绪。
感谢一下这位meil000小伙伴的分享~~

可以看到他说的3个关键:
- appium版本要高于1.63
- 启动的时候要声明automation版本
- 保障5037端口不被占用
解决方案:
- 版本问题
我这里下载的是1.65版本,看版本用以下命令。

如果版本过低,建议去官网下载最新的realease版本,也可以看下我的appium环境搭建里边的如何安装appium。
- 5037端口是否被占用
在控制台输入, netstat -ano | findstr 5037
这里findstr类似于grep的作用

可以看到listening状态栏是被PID为13076占用了, 打开任务管理器找到PID为13076的进程。

可以看到是adb.exe占用了这个端口。
不过这里我没有遇到这个问题,这一步我跳过了。。。
- 安装Uiautomator2
使用npm安装:
在控制台输入: npm install appium-uiautomator2-driver
我用的是cnpm安装,如果用cnpm安装的话请务必在你的nodejs目录安装,因为cnpm会默认安装在当前目录,会导致node找不到你安装的包。
__author__ = 'Woody'
from appium import webdriver
desired_capabilities = dict(platformName="Android",platformVersion=7.0,
deviceName="6EB0217526007136",
appPackage="net.yitu8.drivier",
appActivity=".modles.WelcomeActivity",
newCommandTimeout=200,
automationName="uiautomator2")
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_capabilities)
print(driver.current_activity)
我们先来试试,一起踩坑~
首先我们在配置里边加入automationName="uiautomator2"此选项适配Android7.0,运行代码报错了。。

提示: Command 'D:\Android\android-sdk-windows\build-tools\23.0.1\aapt.exe dump badging D:\nodejs\node_modules\_appium-uiautomator2-driver@0.4.0@appium-uiautomator2-driver\uiautomator2\appium-uiautomator2-server-v0.1.6.apk' exited with code 1
呐,缺了这个apk~~
前方高能: 尽管你提示你安装成功了,但其实并没有。
比如我这儿就是如下提示:

提示安装次数太多,失败了。。。
一句话就想打发我?我不服。。
但是大家可以看到上面提供了下载地址, 我点开下载地址,原来是被墙了。。
没事,我给大家提供一下这2个文件。
复制刚才提示的报错信息里的路径(我本机)D:\nodejs\node_modules_appium-uiautomator2-driver@0.4.0@appium-uiautomator2-driver在资源管理器打开。
然后把你下载的zip解压到此目录。

再次运行代码,OK

Android7.0环境下,case也可以照常运行了!!!
温馨提示: 如果不是我给的下载文件,是自己翻墙去github下的文件,可以看到apk server的版本是0.1.8而和报错提示的0.1.6不一致,我这里直接改了0.1.8的文件名为0.1.6去适配这个问题,猜测源码里写死了,手动滑稽一下~~~
adb.exe的版本也需要注意喔,我一开始版本太低连不上Android7.0的机器。。

关键字: UiAutomator2
有疑惑的同学欢迎大家一起讨论~~~
Appium适配Android7.0以上版本的更多相关文章
- appium_server_v1.4.16版本不适配android7.0系统,运行报错“Attempt to re-install io.appium.settings without first uninstalling”
要解决的问题:appium在androidV7.0系统上运行时报错 Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install io.a ...
- 【亲测】appium_v1.4.16版本自动化适配android7.0系统
要解决的问题:appium在androidV7.0系统上运行时报错 Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install io.a ...
- appium_v1.4.16版本自动化适配android7.0系统
https://www.cnblogs.com/imlvbu/p/7127940.html 要解决的问题:appium在androidV7.0系统上运行时报错 Failure [INSTALL_FAI ...
- Appium在Android7.0及以上系统运行时报错的解决方案
背景:在使用Samsung S系列手机进行自动化测试时,发现同样脚本的情况下华为荣耀系列可以正常运行,最终发现差异在于Android7.0及以上系统和appium版本不匹配,需要升级appium.但需 ...
- appium在android7.0上无法启动问题
前言 由于最近很多android手机升级到7.0系统了,有些小伙伴的appium版本用的还是1.4版本,在运行android7.0的app自动化时候遇到无法启动问题:WebDriverExceptio ...
- android文件分享在android7.0以上版本报错的解决方案
最近在使用蓝牙进行文件分享时,出现了一个奇怪的问题.同样的代码在android5.1上可以顺利运行,但是在android7.0上就运行失败.出现如下的错误: Caused by: android.os ...
- Android圆形头像,拍照后“无法加载此图片”的问题解决(适配Android7.0)
Feature: 点击选择拍照或者打开相册,选取图片进行裁剪最后设置为圆形头像. Problem: 拍好照片,点击裁剪,弹Toast"无法加载此图片". Solution: 在裁剪 ...
- 《吐血整理》高级系列教程-吃透Fiddler抓包教程(26)-Fiddler如何抓取Android7.0以上的Https包-上篇
1.简介 众所周知,假如设备是android 7.0+的系统同时应用设置targetSdkVersion >= 24的话,那么应用默认是不信任安装的Fiddler用户证书的,所以你就没法抓到应用 ...
- Android7.0适配APK安装
Android7.0适配APK安装 适配的原因 对于面向Android7.0的应用,Android框架执行的StrictMode API政策禁止在您的应用外部公开file://URL.如果一项包含文件 ...
随机推荐
- java里程碑之泛型--泛型基本语法
1,java7提供的泛型菱形语法 在java7之前,如果使用带泛型的接口和类定义变量初始化对象的时候,构造器后面也必须带上泛型,这有点恶心的.以前我在公司一直使用的java6,所以我也已经习惯了这种写 ...
- maven系列--maven常用命令
下一篇博客我会讲解用eclipse的m2插件来使用maven,这里先大概的了解下maven常用的命令.之后我在详细整理maven的生命周期,到时候会细致的讲解下这些指令应该要怎么使,maven都帮我们 ...
- ClearCase创建视图与基本命令
1.创建和设置view cleartool mkview -tag King_dev /home/King/King_dev.vws cleartool setview King_dev 2.删除V ...
- jQuery Validate验证框架与 jQuery ajaxSubmit的联合使用
jQuery Validate验证框架自定义验证 第一步导入导入js库 <script src="<%=basePath%>static/js/jquery.js" ...
- Shader 入门笔记(二) CPU和GPU之间的通信
渲染流水线的起点是CPU,即应用阶段. 1)把数据加载到显存中 2)设置渲染状态,通俗说这些状态定义了场景中的网格是怎样被渲染的. 3)调用DrawCall,一个命令,CPU通知GPU.(这个命令仅仅 ...
- css选择器:nth-child()与:nth-of-type()的差异
:nth-child()和:nth-of-type()都是Css3中的伪类选择器,其作用相似却又不完全相同. 名词解释 :nth-child()选择器匹配其父元素的第n个子元素,不论元素类型. :nt ...
- cmake编译安装mysql 5.6.12
cmake安装mysql 5.6.12 从mysql 5.5 开始就要用cmake编译安装 下载mysql 下载地址:http://pan.baidu.com/s/1o68xxqE 一.安装mysql ...
- 安装golang的mongodb驱动mgo速记
这里介绍的方法只适用于Centos平台,测试版本为centos 6.5 下载源码安装实在麻烦,这里采用比较简单的方法给GO安装mongodb驱动 安装mgo之前,需要先安装bzr yum -y ins ...
- iOS-RAC从新手开始
什么是RAC? 其实RAC就是一个简化代码的第三方库ReactiveCocoa,直接用Cocoapods添加到项目里就可以, podfile 文件添加 pod 'ReactiveCocoa',然后终端 ...
- ABP官方文档翻译 3.5 规约
规约 介绍 示例 创建规范类 使用仓储规约 组合规约 讨论 什么时候使用? 什么时候不使用? 介绍 规约模式是一种特别的软件设计模式,通过使用布尔逻辑将业务规则链接起来重新调配业务规则.(维基百科). ...