Appium 手机应用 UI 自动化测试常见问题总结

xuxinhong · 2016年02月04日 · 最后由 appium 回复于 2016年02月26日 · 2026 次阅读

节前最后一天上班,办公室里已经空了一半还多,没什么具体的工作要做,就想把前些阵用做 UI 测试遇到的一些问题与解决方案总结一下,以 android 平台为主,在这里与大家分享。

Android 手机不能识别

在测试过程中,我们经常遇到手机不能识别的情况 (USB 调试都已经打开,adb server 都工作正常的情况下),特别是在 Linux/MAC

  • Linux: 插入设备,然后运行 lsusb,然后得到对应的 ID,如果看不出来你的设备是哪个,就拔下设备,重新运行命令,看一下不同就能定位了。

MAC: system_profiler SPUSBDataType 查看 USB 设备

  • 在自己根目录下 编辑 .android/adb_usb.ini 文件,如果找不到这个文件,就新建一个,然后把上面的 ID 号加进去。

  • 执行下面的命令

    • android update adb
    • adb kill-server
    • adb start-server
    • adb devices

获得第三方应用包名与启动 Activity

我们有时需要与第三方应用交互在 UI 测试过程中,这时需要知道包名与 Activity, 我们可以通过 logcat 获取,但有时第三方应的包名与 activity 名还真是怪异,我们不能完全确定,这时我们可以用 aapt, 它是在 Android-SDK 中 build-tool 目录下

关于中文输入

在 Appium capabilities 里面有两个参数,我们只需设置它们为 TRUE, 但这两个参数只对 ANDROID 平台生效。

webelement.send_keys(u"中国“)

截屏

  • Appium 截全屏提供了 三种方式

get_screenshot_as_file(filename)
get_screenshot_as_png(filename)
get_screenshot_as_base64(filename)

  • adb shell screencap -p /sdcard/screen.png

  • 有时我们需要截某个控件的图,以下是 python 代码,我们先要得到全屏,然后再得到所要截取元素的坐标与高宽,确定截取范围.

  • opencv, 这主要是对于一些 WEB 应用在一些特殊浏览器展示时(比如 UC), 我们通常无法获取界面上的元素,可能需要通过 opencv 去定位元素

长按操作

代码如下(python)

contexts

现在大多数应用都是 Hybird 应用,需要在 Native 与 Webview 之间切换

通过第一条命令获得所有 contexts, 通过第二条命令转换

driver.contexts
driver.switch_to.context(name)

共收到 8 条回复 时间 点赞

很不错,赞一个

—— 来自 TesterHome 官方 安卓客户端

整理了不少坑啊,赞一个

解决不少坑问题啊

继续更新哦,3Q

—— 来自 TesterHome 官方 安卓客户端

long_press 不要设死 duration 感觉更好

好文呀,支持

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册