1、示例脚本

from appium import webdriver

# 启动appium服务后,在appium服务上执行:带着 caps 参数启动 雪球app
driver = webdriver.Remote(command_executor="http://localhost:4723/wd/hub", # command_executor 源码里是默认本地的4723接口,如果我们在本地运行的appium,原则上是可以删掉的
                          desired_capabilities={
                              "platformName": "android",  # 在安卓平台上运行
                              "deviceName": "008640dd0804",  # 在008xxx移动设备上运行
                              "automationName": "uiautomator2",  # 底层使用的自动化插件
                              "appPackage": "com.xueqiu.android",  # 运行哪个app
                              "appActivity": ".view.WelcomeActivityAlias",  #
                              "autoGrantPermissions": "true"  # 默认允许app获取相关权限
                          })

# 点击 某个元素
el1 = driver.find_element_by_id("com.xueqiu.android:id/tv_agree")
el1.click()

# 添加隐形等待
driver.implicitly_wait(60)

# 点击某元素
el2 = driver.find_element_by_xpath(
    "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout[1]/android.widget.RelativeLayout/android.widget.ViewFlipper/android.widget.LinearLayout/android.widget.TextView")
el2.click()

# 发送文本
el3 = driver.find_element_by_id("com.xueqiu.android:id/search_input_text")
el3.send_keys("alibaba")

# 退出app
driver.quit()

2、desired_capabilities 参数解析

常用参数设置

  1. automationName:默认使用 uiatomator
  2. noReset fullReset:是否在测试前后重置相关环境
  3. autoGrantPermissions:自动赋予 App 权限
  4. unicodeKeyBoard resetKeyBoard:是否需要输入非英文之外的语言并在测试完成后重置输入法

2.1 全局参数:

  1. platformName: 你要在哪个平台运行,可以设置为 android
  2. automationName: 必须始终设置为uiautomator2
  3. deviceName:被测设备的名称
  1. noReset: 重置设备清理数据,默认重置
  2. fullReset: 完全重置会卸载被测app,默认不完全重置
  3. printPageSourceOnFindFailure:报错则将实际的 XML 页面源转储到日志
  4. platformVersion:用于设备自动检测
  5. udid:要测试的设备的 UDID。可以从adb devices -l输出中检索。如果未设置,则驱动程序将尝试使用第一个连接的设备。如果运行并行测试,请始终设置此功能。

2.2 驱动程序及服务器 参数:

  1. skipServerInstallation:跳过被测设备上的 UiAutomator2 服务器组件安装以及所有相关检查,默认 false
  2. disableWindowAnimation:启动过程时检测是否禁用窗口动画,默认 false
  3. skipDeviceInitialization:设置为 true,在会话创建时取消设备启动检查,可以加快会话创建速度,默认 false
  1. systemPort:UiAutomator2 服务器正在侦听的端口号。默认情况下,选择 8200…8299 范围内的第一个空闲端口。如果您在同一台机器上运行并行测试,建议设置此值。
  2. uiautomator2ServerLaunchTimeout:UiAutomator2Server 在设备上监听的最大等待毫秒数。30000默认为毫秒
  3. uiautomator2ServerInstallTimeout:设备上安装 UiAutomator2Server 的最大等待毫秒数。20000默认为毫秒
  4. uiautomator2ServerReadTimeout:等待来自 UiAutomator2Server 的 HTTP 响应的最大毫秒数。

2.3 App 参数:

  1. appActivity:主要应用活动的名称
  2. appPackage:应用程序包的标识符
  3. autoLaunch:测试开始后是否自动启动被测应用程序,默认 True
  4. autoGrantPermissions:在测试开始时自动授予所有请求的应用程序权限,默认 False
  5. otherApps:设置一个或多个逗号分隔的 Android 包路径,这些包将与被测主应用程序一起安装。如果测试的应用程序具有依赖项
  6. uninstallOtherPackages:允许设置一个或多个以逗号分隔的包标识符,以便在测试开始之前从设备中卸载
  7. enforceAppInstall:true则始终重新安装被测应用程序,即使被测设备上已经存在该应用程序的较新版本
  1. app:要测试的应用程序的完整路径
  2. browserName:运行测试的浏览器的名称
  3. appWaitActivity:对活动名称的等待
  4. appWaitPackage:对程序包的等待
  5. appWaitDuration:等待被测应用程序启动的最大毫秒数
  6. androidInstallTimeout:等待安装被测应用程序的最大毫秒数
  7. appWaitForLaunch:是阻塞直到被测应用程序在其活动被活动管理器启动后将控制权返回给调用者(true默认值),还是继续测试而不等待(false)。
  8. intentCategory:设置通过Activity Manager启动给定 appActivity 时应用的可选意图类别
  9. intentAction:设置通过Activity Manager启动给定 appActivity 时应用的可选意图操作
  10. intentFlags:设置通过Activity Manager启动给定 appActivity 时应用的可选意图标志
  11. optionalIntentArguments:设置由Activity Manager启动给定 appActivity 时应用的可选意图参数
  12. dontStopAppOnReset:应用程序已在运行时重新启动
  13. allowTestPackages:使用 test 标志构建的包进行自动化测试
  14. remoteAppsCacheLimit:设置要在被测设备上缓存的应用程序包的最大数量

2.4 App本地化 参数:

  1. localeScript:为被测应用设置的语言环境的规范名称,例如 zh-Hans-CN
  2. language:要为其提取应用程序字符串的语言名称。 默认为当前系统语言提取字符串。
  3. locale:设置被测应用的语言环境

2.5 ADB 参数:

  • adbPort:运行 ADB 的端口号,默认 5037
  • remoteAdbHost:运行 ADB 的主机的地址(-HADB 命令行选项的值)。默认未设置
  • adbExecTimeout:等待执行单个 ADB 命令的最大毫秒数。20000默认为毫秒
  • clearDeviceLogsOnStart:UiAutomator2 会在开始新测试之前删除设备缓冲区中的所有现有日志,默认 False
  • buildToolsVersion:要使用的 Android 构建工具的版本,UiAutomator2 驱动程序使用机器上安装的最新版本的构建工具
  • skipLogcatCapture:在测试运行期间禁用自动 logcat 输出收集,默认false
  • suppressKillServer:设置为true防止驱动程序显式终止 ADB 服务器。如果 ADB 以无线方式连接,可能会很有用
  • ignoreHiddenApiPolicyError:设置为 true 会在更改隐藏的 API 访问策略时忽略失败
  • mockLocationApp
  • logcatFormat
  • logcatFilterSpecs
  • allowDelayAdb

2.6 模拟器(Android 虚拟设备) 参数:

  1. networkSpeed:为模拟器设置所需的网络速度限制
  2. gpsEnabled:在模拟器中启用 GPS 服务。
  3. isHeadless:模拟器以无GUI模式启动
  4. avd:运行测试的 Android 模拟器的名称,查看当前安装的模拟器名称:avdmanager list avd
  5. avdLaunchTimeout:等待安卓模拟器启动的最大毫秒数,默认6秒
  6. avdReadyTimeout:等待安卓模拟器完全启动的最大毫秒,默认6秒
  7. avdArgs:字符串或模拟器命令行参数数组。
  8. avdEnv:模拟器环境变量的影身

2.7 App签名 参数:

  1. noSign:跳过应用程序签名
  2. useKeystore:使用自定义密钥库对被测应用进行签名
  3. keystorePath:服务器文件系统上密钥库文件的完整路径
  4. keystorePassword:功能中提供的密钥库文件的密码keystorePath
  5. keyAlias:能力中提供的密钥库文件中密钥的别名keystorePath
  6. keyPassword:力中提供的密钥库文件中密钥的密码keystorePath

2.8 解锁设备 参数:

  1. skipUnlock:是否跳过锁屏存在检查 ( true)。默认情况下,UiAutomator2 驱动程序会尝试在开始测试之前检测设备的屏幕是否被锁定并解锁
  2. unlockType:设置一种可能的 Android 锁定屏幕类型以进行解锁
  3. unlockKey:允许设置解锁密钥
  4. unlockStrategy:“锁定设置”(默认)或“uiautomator”。将其设置为“uiautomator”将强制驱动程序避免使用特殊的ADB快捷方式,以加快解锁过程。
  5. unlockSuccessTimeout:等待设备解锁的最大毫秒数,默认2秒

2.9 其他 参数:

  1. userProfile:用户配置文件的整数标识符。默认情况下,正在测试的应用程序是为当前活动的用户安装的,但如果在为用户配置文件安装应用程序时需要测试应用程序的性能,这与当前用户配置文件不同,那么此功能可能会派上用场。
  2. skipLogCapture:跳过以开始捕获日志,例如logcat。这可能会提高网络性能。如果启用该功能,与日志相关的命令将不起作用。默认为false。
  3. newCommandTimeout:在假设客户端停止发送请求之前,驱动程序应该等待来自客户端的新命令多长时间(以秒为单位)
  4. disableSuppressAccessibilityService:测试期间不要抑制可访问性服务。
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐