Appium适配Android7.0以上版本

  • 测试机型: 华为荣耀V9
  • 安卓版本: Android7.0
  • appium版本: 1.65

说明:

公司新采购了一批安卓机器,拿了其中一台华为荣耀V9跑之前写的测试用例,发现每次登陆以后进入到MainActivity了之后,元素就获取不到了,试了一下driver.page_source也是报了超时。本能反应是Android7.0的问题,于是去testerhome搜了巨多安卓7.0的东东。找到了一些头绪。

感谢一下这位meil000小伙伴的分享~~

可以看到他说的3个关键:

  1. appium版本要高于1.63
  2. 启动的时候要声明automation版本
  3. 保障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个文件。

UiAutomator2.zip

复制刚才提示的报错信息里的路径(我本机)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以上版本的更多相关文章

  1. 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 ...

  2. 【亲测】appium_v1.4.16版本自动化适配android7.0系统

    要解决的问题:appium在androidV7.0系统上运行时报错 Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install io.a ...

  3. appium_v1.4.16版本自动化适配android7.0系统

    https://www.cnblogs.com/imlvbu/p/7127940.html 要解决的问题:appium在androidV7.0系统上运行时报错 Failure [INSTALL_FAI ...

  4. Appium在Android7.0及以上系统运行时报错的解决方案

    背景:在使用Samsung S系列手机进行自动化测试时,发现同样脚本的情况下华为荣耀系列可以正常运行,最终发现差异在于Android7.0及以上系统和appium版本不匹配,需要升级appium.但需 ...

  5. appium在android7.0上无法启动问题

    前言 由于最近很多android手机升级到7.0系统了,有些小伙伴的appium版本用的还是1.4版本,在运行android7.0的app自动化时候遇到无法启动问题:WebDriverExceptio ...

  6. android文件分享在android7.0以上版本报错的解决方案

    最近在使用蓝牙进行文件分享时,出现了一个奇怪的问题.同样的代码在android5.1上可以顺利运行,但是在android7.0上就运行失败.出现如下的错误: Caused by: android.os ...

  7. Android圆形头像,拍照后“无法加载此图片”的问题解决(适配Android7.0)

    Feature: 点击选择拍照或者打开相册,选取图片进行裁剪最后设置为圆形头像. Problem: 拍好照片,点击裁剪,弹Toast"无法加载此图片". Solution: 在裁剪 ...

  8. 《吐血整理》高级系列教程-吃透Fiddler抓包教程(26)-Fiddler如何抓取Android7.0以上的Https包-上篇

    1.简介 众所周知,假如设备是android 7.0+的系统同时应用设置targetSdkVersion >= 24的话,那么应用默认是不信任安装的Fiddler用户证书的,所以你就没法抓到应用 ...

  9. Android7.0适配APK安装

    Android7.0适配APK安装 适配的原因 对于面向Android7.0的应用,Android框架执行的StrictMode API政策禁止在您的应用外部公开file://URL.如果一项包含文件 ...

随机推荐

  1. finally中关闭资源

    对finally中关闭资源是否还要使用try...catch老是感到迷惑,现在存个例子,省的忘了 public StringBuilder readTxtFile(File file){ String ...

  2. 如何书写优雅、漂亮的SQL脚本?

    本篇来聊聊如何书写漂亮.整洁.优雅的SQL脚本,下面这些是我个人总结.整理出来的.姑且做个抛砖引玉吧,呵呵,欢迎大家一起来讨论.   我们首先来看看一段创建数据表的脚本(如下所示),你是否觉得有什么不 ...

  3. 《css定位 position》课程笔记

    这是我学习课程css定位 position时做的笔记! 本节内容 html的三种布局方式 position可选参数 z-index 盒子模型和定位的区别 侧边栏导航跟随实例 html的三种布局方式 三 ...

  4. win10的系统下怎么设置网页的字体变大

    对于 EDGE 浏览器: 点击右上角的设置图标(三个小点)--缩放,点击 + 号放大字体.   本回答由提问者推荐

  5. Vsftp的PASV mode(被动模式传送)和Port模式解释

    什么叫做PASV mode(被动模式传送)?他是如何工作的?FTP的连接一般是有两个连接的,一个是客户程和服务器传输命令的,另一个是数据传送的连接.FTP服务程序一般会支持两种不同的模式,一种是Por ...

  6. Oracle常见授权与回收权限——grant和revoke

    1.GRANT 赋于权限常用的系统权限集合有以下三个:CONNECT(基本的连接), RESOURCE(程序开发), DBA(数据库管理) 常用的数据对象权限有以下五个:ALL ON 数据对象名, S ...

  7. Linux设置DNS地址及清理DNS缓存方法

    1.设置DNS地址 编辑vim /etc/resolv.conf 文件. 增加DNS地址:nameserver ip. 2.清理DNS缓存 清理dns缓存: 通过重启nscd服务来达到清理dns缓存的 ...

  8. ubuntu 开发板ping通虚拟机挂载nfs服务器

    先.nfs服务配置1.设置开发板ip ,同一网段2.开发板上操作:ifconfig eth0 192.168.1.203.测试是否能够ping通:ping 192.168.1.194.测试开发板ip是 ...

  9. LeetCode - 728. Self Dividing Numbers

    A self-dividing number is a number that is divisible by every digit it contains. For example, 128 is ...

  10. ubuntu16.04安装ftp服务器

    参考文章: http://www.linuxidc.com/Linux/2017-01/139233.htm 1.检查是否安装vsftpd,如果安装了跳过第二步 vsftpd -v 2.安装vsftp ...