zoukankan      html  css  js  c++  java
  • appium在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:softpython3.6python.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:softpython3.6libsite-packagesappiumwebdriverwebdriver.py", line 36, in __init__
        super(WebDriver, self).__init__(command_executor, desired_capabilities, browser_profile, proxy, keep_alive)
      File "D:softpython3.6libsite-packagesseleniumwebdriver
    emotewebdriver.py", line 90, in __init__
        self.start_session(desired_capabilities, browser_profile)
      File "D:softpython3.6libsite-packagesseleniumwebdriver
    emotewebdriver.py", line 177, in start_session
        response = self.execute(Command.NEW_SESSION, capabilities)
      File "D:softpython3.6libsite-packagesseleniumwebdriver
    emotewebdriver.py", line 236, in execute
        self.error_handler.check_response(response)
      File "D:softpython3.6libsite-packagesseleniumwebdriver
    emoteerrorhandler.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 所有版本下载地址

    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:UsersadminAppDataLocalProgramsappium-desktop
    esourcesapp
    ode_modulesappium
    ode_modulesappium-unlockinunlock_apk-debug.apk: Failure [INSTALL_FAILED_UPDATE_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)
    

    ** 在学习过程中有遇到疑问的,可以appium+python QQ群交流:330467341**

  • 相关阅读:
    2020年天梯赛补题报告
    补提报告...
    2020.11.14天梯赛练习*6 补题
    2020-11-08补题报告
    2020-10-30 — 补题报告
    10-24 补题
    2020.10.17天梯赛练习 和 16 号个人赛 补题报告
    elasticsearch DQL 有关表达式的设计
    tab键和空格键
    emacs配置python开发环境
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/8757324.html
Copyright © 2011-2022 走看看