由于安全问题,Appium 1.x 版本不再被维护,但想要继续使用Appium进行自动化可以使用 Appium 2.x。
1. 安装Appium 2.x
在过往文章中有介绍过Appium 1.x 的安装,所以一些必备的软件(如:JDK、SDK、node.js、Python)安装就不再细嗦,不了解的小伙伴可以前往查看 Appium 1.x安装与入门
1.1 卸载旧版 Appium 1.x
使用npm命令卸载以前安装的旧版 Appium 1.x(如果安装过的话)
npm uninstall -g appium
再卸载 Appium-doctor (如果安装过的话)
npm uninstall -g appium-doctor
然后再检查一下有没有卸载干净
appium -v
如果命令行没有返回 Appium 的版本信息或者返回 “command not found”,则说明旧版 Appium 已经卸载干净。
1.2 安装Appium 2.x
安装 Appium
npm install -g appium
检查Appium版本号
appium –v
2. 安装Appium driver
appium driver install uiautomator2
安装完成以后,可以通过以下命令查看安装好的驱动
3. 安装Appium Inspector
Appium Inspector的安装往期也有讲过,因为跟与Appium服务器分家,所以现在Appium Inspector的安装也是很方便的,直接到GitHub下载最新的安装就行,Appium Inspector下载地址:https://github.com/appium/appium-inspector/releases
4. 安装Appium Python Client客户端
由于博主比较喜欢用Python来做自动化,所以这里介绍安装Python端的客户端
pip install Appium-Python-Client
5. 启动及连接测试
5.1 启动Appium 2.x
5.2 Appium Inspector连接
在Appium Inspector中添加如下配置
{
"platformName": "Android",
"appium:platformVersion": "8.1.0",
"appium:deviceName": "6a2c02ad",
"appium:automationName": "UiAutomator2",
"appium:appPackage": "tv.danmaku.bili",
"appium:appActivity": "tv.danmaku.bili.MainActivityV2",
"appium:ignoreHiddenApiPolicyError": "true",
"appium:unicodeKeyboard": false,
"appium:noReset": true
}
保存后启动会话(中间会安装一些应用在手机上,同意就行了)
5.3 脚本连接测试
from appium import webdriver
from appium.options.android import UiAutomator2Options
from selenium.webdriver.common.by import By
from appium.webdriver.extensions.android.nativekey import AndroidKey
"""
@author: Hincy
"""
desired_caps = {
'platformName':'Android', # 被测手机为安卓
'platformVersion':'8.1.0', # 手机安卓版本
'deviceName':'6a2c02ad', # 设备名,安卓手机可以随便填写
'appPackage':'tv.danmaku.bili', # 启动App,Package名称
'appActivity':'tv.danmaku.bili.MainActivityV2', # 启动Activity名称
'unicodeKeyboard':False, # 使用自带输入法,输入中文时填写True
'resetKeyboard':True, # 执行完程序恢复原来输入法
'noReset':True, # 不要重置App
'newCommandTimeout':6000,
'automationName':'uiAutomator2'
}
# 连接Appium Server
server_url = "http://127.0.0.1:4723"
options = UiAutomator2Options().load_capabilities(desired_caps)
driver = webdriver.Remote(command_executor=server_url,options=options)