最近在学Appium,选择了在genymotion模拟器上调试,在这个过程中遇到了不少问题,记录在此,希望能帮到遇到和我一样报错的伙伴。
1.报错:Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。
报这个错,大概率是忘记打开Appium了。打开Appium再运行代码即可。
2.报错:An unknown server-side error occurred while processing the command.
我在切换模拟器安卓版本和安装APP时都报了这个错。
首先,如果模拟器的版本低于12.0时,报这个错,解决方法如下:
(1)在启动参数中将skipServerInstallation的属性值改为False,重新执行一次后,再改回True。
网上的好多博客都推荐此方法,但我试完之后并没有什么卵用!
(2)在启动参数中添加 automationName=UiAutomator1,然后重新运行就成功了!
import time
from appium import webdriver
#创建一个字典,包装相应的启动参数
desired_caps = dict()
#需要连接的手机的平台
desired_caps['platformName'] = 'Android'
#需要连接的手机的版本号
desired_caps['platformVersion'] = '8.0'
desired_caps['automationName']='UiAutomator1'
#需要连接的手机设备号,安卓平台下,可以随便写,但不能不屑
desired_caps['deviceName'] = '192.168.89.101:5555'
#需要启动的程序的包名
desired_caps['appPackage'] = 'com.android.settings'
#需要启动的程序的界面名
desired_caps['appActivity'] = '.Settings'
#连接appium服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
在安装APP时报该错误,用driver.install_app()无法安装APP,于是我尝试用adb命令安装。打开cmd面板,输入adb install,然后将要安装的app拖入面板,路径就自动输入了,回车。我的报错显示Failure [INSTALL_FAILED_NO_MATCHING_ABIS:Failed to etract native libraries,res-113.
网上说这是因为当前的app使用了native libraries与模拟器的CPU架构不一致所导致的,而genymotion模拟器默认创建的只支持x86架构而不支持arm架构。我们需要导入转换包使其能够支持arm。网上的博客提到的转换报都是GenyMotion-ARM-Translation_v1.1.zip,将其拖入模拟器中即可。但事实是,该包只适用于安卓版本4.1-4.31,其他版本模拟器拖入该包会显示如下提示:
这只是将该包作为文件复制到了模拟器中,并不算成功。
正确的做法:根据模拟的安卓版本下载对应的转换包,然后拖入模拟器,成功的界面应该如下所示:
参考博客:https://blog.youkuaiyun.com/GHY2016/article/details/83422620 (按照对应版本下载对应转换包)
导入转换包后,即可正常安装app!