appium文档:https://appium.io/docs/en/2.0/guides/migrating-1-to-2/
**迁移背景:
配置:mac电脑13.3.1,xcode14.3,appium 1.23,python3.9,npm 9.6.6,node v20.2.0,测试机是苹果13mini iOS15.6
迁移的理由:
iOS自动化在6月2号之前一直能正常执行,突然在6月2号这天,执行报错:UnknownError: An unknown server-side error occurred while processing the command. Original error: Could not load a driver for automationName ‘XCUITest’ and platformName ‘iOS’. Please verify your Appium installation
appium服务器日志是:import * as dependencies from ‘./lib/check-dependencies’;SyntaxError: Cannot use import statement outside a module
网上类似问题:https://testerhome.com/topics/36004
类似这个,https://github.com/appium/appium/issues/17990
归根原因是:appium1.x不适配xcode14.3,所以要xcode14.3就要升级到appium2.0(因为的mac系统是13.3.1,必须要xcode14以上,所以没有办法降xcode的版本)
在网上搜了各种尝试都不行,所以就打算升级成appium2.0,升级成功后就解决了上述的问题。自动化脚本能正常执行了
1.卸载以前的appium 1.x服务器
npm uninstall -g appium
mac电脑: brew uninstall appium
2.安装2.x的appium服务器
npm install -g appium@next
注:如果用的命令是npm install -g appium,安装的还是以前的appium 1.x,因为目前最新官方版本还是1.x,appium2.x还只是beta阶段
3.安装驱动driver,最新版
appium driver install xcuitest
(因为我用的的测试机是苹果没有低于iOS 10的系统,所以我只安装xcuitest没有安装uiautomator2)
安装完成后,driver安装的路径是:$APPIUM_HOME/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent ,
$APPIUM_HOME 默认是~/.appium,如果你自己有更改,则是你自己配置的
我的是在:/Users/guanliyuan/.appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent
注涉及到的其他可能用到的命令:
appium driver install uiautomator2 #安装最新版uiautomator驱动
appium driver install xcuitest@4.12.2 #安装特定版本4.12.2的xcuitest驱动
appium driver install --source=npm appium-xcuitest-driver[@<version>] #从npm安装xcuitest驱动
appium driver install --source=local /Users/me/sources/appium-xcuitest-driver #安装本地的xcuitest驱动
appium driver install --source=github --package=appium-xcuitest-driver appium/appium-xcuitest-driver #安装来自github来源的xcuitest驱动
appium driver list --installed #查询已经安装的驱动
appium driver update xcuitest #更新升级驱动
appium driver uninstall xcuitest #卸载xcuitest驱动
4.配置webdriveragent
a.mac直接在访达执行快捷键win+shift+G,输入驱动的地址(第三步安装diriver的地址)然后回车,我的是/Users/guanliyuan/.appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent
b.在目录下找到WebDriverAgent.xcodeproj文件,用xcode打开
c.按以前的方法重新build和test在测试机生成WebDriverAgent.即可
5.升级appium inspector
a.从https://github.com/appium/appium-inspector/releases下载适配appium 2.0的appium inspector
b.下载成功后,直接手动安装
c.安装成功后启动,appium inspect
如果启动appium inspect 失败,提示:无法打开“Appium Inspector”,因为Apple无法检查其是否包含恶意软件
则按如下操作解决:
在终端执行命令:xattr -cr /Applications/Appium\ Inspector.app
其中/Applications/Appium\ Inspector.app这个是你的安装路径,执行命令时要替换成自己的路径,执行命令后 重新启动 appium inspector就能启动成功了
(注:macOS上使用桌面应用程序,提示“应用程序无法打开或未经Apple验证或类似情况的错误”,解决方法是在终端执行命令:xattr -cr 应用程序安装路径)
d.appium insepctor 连接测试机
appium insepect 针对appium 2.0有个不同点就是remote path,appium 1.x是’/wd/hub’,appium 2.0要改成’/',其他都和appium 1.x的配置一致
按上图的配置完成后,点击start session即可
6.自动化测试代码层的改动
a.连接服务器的配置,要变化
from appium import webdriver
driver: WebDriver = webdriver
1.连接appium1.x这里代码是:webdriver.Remote(http://127.0.0.1:4723/wd/hub)
2.连接appium2.x的服务器,这里就要改成:webdriver.Remote(http://127.0.0.1:4723)
b.启动webdirveragent服务的命令变化:
appium2.0是:appium -p {port} --driver-xcuitest-webdriveragent-port {agent_port}
appium1.x是:appium -p {port} --webdriveragent-port {agent_port}
port是appium服务器的端口号,–webdriveragent-port 就是webdriveragent的端口转发的指定端口,在iOS端上的webdriveragent启动服务后默认是手机ip:8100