appium+python自动化36-android7.0连不上的问题

前言

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

我的电脑环境:

  • python 3.6

  • android 7.0

  • appium 1.4.13

android7.0遇到问题

1.执行代码:

# coding:utf-8 # 作者:上海-悠悠 from appium import webdriver from time import sleep desired_caps = {                'platformName': 'Android',                'deviceName': 'A5RNW18316011440',                'platformVersion': '7.0',                'appPackage': 'com.baidu.yuedu',                'appActivity': 'com.baidu.yuedu.splash.SplashActivity'                } driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

2.执行后报错如下:A new session could not be created

D:\soft\python3.6\python.exe D:/xcm_app_test/app/test_login.py Traceback (most recent call last):  File "D:/xcm_app_test/app/test_login.py", line 11, in <module>    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)  File "D:\soft\python3.6\lib\site-packages\appium\webdriver\webdriver.py", line 36, in __init__    super(WebDriver, self).__init__(command_executor, desired_capabilities, browser_profile, proxy, keep_alive)  File "D:\soft\python3.6\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 90, in __init__    self.start_session(desired_capabilities, browser_profile)  File "D:\soft\python3.6\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 177, in start_session    response = self.execute(Command.NEW_SESSION, capabilities)  File "D:\soft\python3.6\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 236, in execute    self.error_handler.check_response(response)  File "D:\soft\python3.6\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 192, in check_response    raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: A new session could not be created. (Original error: Command failed: )

分析问题

1.遇到无法启动问题,报错都一样:A new session could not be created,看编辑器报错是没啥用的,这个时候就需要打开appium的日志界面,分析走到哪一步报错了,日志太多,就贴一部分了

> info: [debug] Device is at API Level 24 > info: Device API level is: 24 > info: [debug] Extracting strings for language: default > info: [debug] Apk doesn't exist locally > info: [debug] Could not get strings, but it looks like we had an old strings file anyway, so ignoring

2.从上面日志可以看出,当前的设备API版本是24,而appium1.4支持的最高API版本是23。打开appium客户端,左上角点机器人图标,点开platformVersion如下图所示

3.也就是说appium1.4支持最高android版本是6.0,查下资料可以知道android7.0需使用appium1.6.3以上版本才能支持。

解决问题

1.重新下载最新版appium,appium1.6以后版本都是以appium-desktop命名的,目前我使用的版本是appium-desktop1.2.2,安装完之后也就是V1.7.1版本

2.appium-desktop所以版本在github都能下载到:
appium-desktop 所有版本下载地址(https://github.com/appium/appium-desktop/tags)

3.appium-desktop和之前老的appium版本是可以共存的,所有不需要卸载之前的版本,重新打开appium1.7版本,运行代码

4.重新运行时候发现报这个错,从报错信息看是手机上安装的unlock版本不匹配(因为之前运行appium1.4版本有残留),解决办法:手动卸载手机上的appium settings和Unlock就可以了

selenium.common.exceptions.WebDriverException:
Message: An unknown server-side error occurred while processing the
command. Original error: Error executing adbExec. Original error:
'Command 'D\:\\soft\\Android\\platform-tools\\adb.exe
-P 5037 -s A5RNW18316011440 install C\:\\Users\\admin\\AppData\\Local
\\Programs\\appium-desktop\\resources\\app\\node_modules\\appium\\
node_modules\\appium-unlock\\bin\\unlock_apk-debug.apk' exited with
code 1'; Stderr: 'Failed to install C:\Users\admin\AppData\Local\
Programs\appium-desktop\resources\app\node_modules\appium\node_module
s\appium-unlock\bin\unlock_apk-debug.apk: Failure [INSTALL_FAILED_UPDA
TE_INCOMPATIBLE: Package io.appium.unlock signatures do not match
the previously installed version; ignoring!]'; Code: '1'

备注

1.有些小伙伴可能用的appium1.6版本,可以尝试加上这个参数,用uiautomator2运行

'automationName’: 'uiautomator2’

# coding:utf-8 # 作者:上海-悠悠 from appium import webdriver from time import sleep desired_caps = {                'platformName': 'Android',                'deviceName': 'A5RNW18316011440',                'platformVersion': '7.0',                'automationName': 'uiautomator2',                'appPackage': 'com.baidu.yuedu',                'appActivity': 'com.baidu.yuedu.splash.SplashActivity'                } driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

(0)

相关推荐

  • 程序员眼中的测试

    码农的产品和服务大都是以软件形式存在的,我们存在的价值之一就是快速提供高质量的软件产品或服务.如何保障软件的高质量呢?这与软件测试分不开的,测试是保证软件质量的关键环节之一. 老码农早年曾经做过两年的 ...

  • 【自动化测试】自动化测试框架与工具

    文章目录 1)什么是自动化测试框架? 1.1 什么是框架? 1.2 什么是自动化测试框架? 1.2.1 优点: 1.2.2 框架的基本组件 1.需要配置文件管理: 2.业务逻辑代码和测试脚本分离 3. ...

  • appium+python自动化35-adb devices死活连不上

    启动adb 1.打开cmd首次使用adb devices,出现下面这两句,就是正在启动adb服务 C:\Users\admin>adb devices List of devices attac ...

  • Appium+python自动化9-SDK Manager

    前言 SDK Manager到有哪些东西是必须安装的呢? 一.SDK Manager 1.双击打开SDK Manager界面 2.Tools里面前三个是必须下载的 --Android SDK Tool ...

  • Appium+python自动化10-AVD 模拟器

    前言 有些小伙伴没android手机,这时候可以在电脑上开个模拟器玩玩 一.模拟器配置 1.双击启动AVD Manager,进入配置界面 2.点Create按钮创建 3.配置模拟器基本信息 --AVD ...

  • Appium+python自动化11-adb必知必会

    前言 学android测试,adb是必学的,有几个常用的指令需要熟练掌握 一.检查设备 1.如何检查手机(或模拟器)是连上电脑的,在cmd输入: >adb devices 2.一定要看到上图红色 ...

  • Appium+python自动化12-appium元素定位

    前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一.id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性 ...

  • Appium+python自动化13-native和webview切换

    前言 现在大部分app都是混合式的native+webview,对应native上的元素通过uiautomatorviewer很容易定位到,webview上的元素就无法识别了. (手机上要先装个百度阅 ...

  • Appium+python自动化14-查看webview上元素(DevTools)

    前言 app上webview的页面实际上是启用的chrome浏览器的内核加载的,如何把手机的网页加载到电脑上,电脑的chrome浏览器上有个开发模式,是可以方便调试的. 一.环境准备 1.手机上装一个 ...

  • Appium+python自动化15-Mac上环境搭建

    前言 mac上搭建appium+python的环境还是有点复杂的,需要准备的软件 1.nodejs 2.npm 3.cnpm 4.appium 5.pip 6.Appium-Python-Client ...

  • Appium+python自动化16-启动ios上Safari浏览器

    前言 在mac上搭建appium踩了不少坑,先是版本低了,启动后无限重启模拟器.后来全部升级最新版本,就稳稳的了.本篇介绍如何用appium启动ios上的safari浏览器,然后可以用手机上浏览器做w ...