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.如果一项包含文件 ...
随机推荐
- Android开发模板代码(一)——简单打开图库选择照片
首先,先贴上样本代码 //检查权限 public void checkPermission() { if (ContextCompat.checkSelfPermission(this, Manife ...
- JSP内置对象值out对象及其它的一些常见方法
out对象: out对象是jspWriter类的实例,是向客户端输出内容常用的对象. 常用方法如下: void println() 向客户端打印字符串 void clear() 清除缓冲区的内容,如果 ...
- SEO—Meta标签优化
Meta标签之一"标题": 标题是网站中很重要的一个标签,他在搜索引擎中是直接显示出来的,一般情况下要网站的核心关键词和网站名称都写进去,这样更有利于网站的排名.但是要注意标题的长 ...
- 禁止img图片拖动在新窗口打开
JS function imgdragstart(){return false;} for(i in document.images)document.images[i].ondragstart=im ...
- 常用Nagios配置命令
cd /usr/local/nagios/etc vim nagios.cfg /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios ...
- js函数知识
1.函数基本知识 通过函数可以封装任意条语句,在任何地方调用,js中用function关键字来声明, //基本格式,函数名,传递参数,代码块 function functionName(arg0,ar ...
- 《.NET 设计规范》第 7 章:异常
第 7 章:异常 异常与各种面向对象语言集成得非常好. 异常增强了 API 的一致性. 在用返回值来报告错误时,错误处理的代码与可能会发生错误的代码距离总是很近. 更容易使错误处理的带码全局化. 错误 ...
- crontab 定时任务守护程序,停止服务器时出现 job for * canceled
(1)首先要在程序启动的时候加入定时任务到crontab #! /bin/shmkdir -p /home/apps/components/ams/ 2>/dev/nullcp ./amswat ...
- 实现兼容document.querySelector的方法
var querySelector = function(selector) { //TODO 先简单兼容,后续继续扩展: var element = null; if(document.queryS ...
- JavaScript 基本语法 -- 运算符的优先级
在所有的运算里,都是有运算顺序的.小时候学四则运算的时候,我们都知道这么一个规则:先乘除后加减,有括号要先算括号! 同样的,在JavaScript里面,运算符也是有相应的优先级的.其优先级如下表所示, ...