-
手机驱动对象
驱动对象会帮助我们完成手机和脚本之间交互. -
导入driver对象
from appium import webdriver -
声明手机驱动对象
只有声明驱动对象我们才可以让手机完成脚本的操作,声明的方法如下:
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) # 声明对象后会直接启动参数中的应用
desired_caps: ???
- 手机启动参数
desired_caps:负责启动服务端时的参数设置,appium server 与手机端建立会话关系时,根据这些参数服务端可以做出相应的处理
desired_caps常用参数:
platformName 平台的名称:iOS, Android, or FirefoxOS
platformVersion 设备系统版本号
deviceName 设备号 IOS:instruments -s devices,Android: adb devices
app 安装文件路径:/abs/path/to/my.apk or http://myapp.com/app
appActivity 启动的Activity
appPackage 启动的包
unicodeKeyboard unicode设置(允许中文输入)
resetKeyboard 键盘设置(允许中文输入)
newCommandTimeout 设置appium的超时时间,默认60s(我想传大文件或者弱网会导致appium超时)
udid 有多台设备时,可以使用udid进行选择
autoGrantPermissions 设置为True,自动跳过权限弹窗
noReset 不重置应用,保持原有的一些数据(只对Android,iOS不一样的含义)
fullrestet 重置应用,原有的数据全部清除(只对Android,iOS不一样的含义)
dontStopAppOnReset 运行程序开始时不退出APP重新启动,在原有的基础上进行
skipDeviceInitialization 跳过安装、权限设置等操作
# server 启动参数
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.56.101:5555'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
- 脚本内启动其他app
driver.start_activity(appPackage,appActivity)
-
关闭app
driver.close_app() # 关闭当前操作的app,不会关闭驱动对象 -
关闭驱动对象
driver.quit() # 关闭驱动对象,同时关闭所有关联的app
-
实例代码
from appium import webdriver import time # server 启动参数 desired_caps = {} # 设备信息 desired_caps['platformName'] = 'Android' desired_caps['platformVersion'] = '5.1' desired_caps['deviceName'] = '192.168.56.101:5555' # app信息 desired_caps['appPackage'] = 'com.android.settings' desired_caps['appActivity'] = '.Settings' driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) time.sleep(5) driver.quit()