Appium Appium 故障调试 Troubleshooting Appium 中文文档

恒温 · 2013年12月25日 · 最后由 思寒_seveniruby 回复于 2013年12月26日 · 3753 次阅读
本帖已被设为精华帖!

Appium 故障调试

======================
如果你遇到问题,先不要提交 ticket 到 github 或者发信去 appium-disscuss 邮件列表求教,这里教你如何处理。

一般问题

  • 确保你是根据 README 里面的入门指南按部就班的。
  • 确保你的系统配置好了 (比如, xCode 是最新的,Android SDK 安装好了, ANDROID_HOME 配置好了,参照 setup instructions ).
  • 确保你应用的路径正确。

如果你从 Appium.app 运行的话 (通过 dmg 安装的)

  • 升级应用,然后重启。 如果你提示你无法升级,从appium.io重新下载。

如果你从源代码运行 Appium 的话

  • 在源代码目录下运行 git pull 确保你使用的是最新的代码。
  • 根据你想要自动化的平台运行 reset.sh :

    ./reset.sh # 所有平台
    ./reset.sh --ios # ios-only
    ./reset.sh --android # android-only
    ./reset.sh --selendroid # selendroid-only

  • 你可能会用到 --dev,如果你想下载和构建测试应用的话。

  • 你也能使用 appium-doctor 来自动验证所有依赖是否符合。如果从源代码运行,你可以使用bin/appium-doctor.js 或者 node bin/appium-doctor.js

  • 如果你升级到 Android SDK 22,然后得到了如下错误:
    {ANDROID_HOME}/tools/ant/uibuild.xml:155: SDK does not have any Build Tools installed.
    在 Android SDK 22 里,platform 和 build 工具被拆分到它们各自项中去。你需要确保安装了 build-tool 和 platform-tool。

Android

  • 确保 Android 模拟器启动并运行着。
  • 有时候需要运行 adb kill-server && adb devices。它可以帮助重置和 Android 设备之间的连接。
  • Make sure you know about the app-package, app-activity, and app-wait-activity desiredCapabilities (see this doc for more information).
  • 你得知道 app-packageapp-activityapp-wait-activity (详见 文档).

IOS

  • 确保 Instruments.app 没打开。
  • If you're running the simulator, make sure your actual device is not plugged in
  • 如果你运行模拟器,确保没有连接真机。
  • 确保你的 Setting 里面 accessibility 辅助功能已经关闭
  • 确保 APP 是为这个版本的模拟器编译的。
  • 如果你曾经用 sudo 运行过 Appium, 你需要先删除/tmp/instruments_socksudo rm /tmp/instruments_sock。然后不要使用 sudo 启动 Appium。
  • 如果你第一次运行 Appium,先授权使用 Instruments。通常会有一个对话框弹出让你输入你的密码。如果你从源代码运行 Appium,你只需简单的运行 sudo grunt authorize。如果用 npm 安装的话,运行 sudo authorize_ios 即可。
  • 如果你看到 iOS Simulator failed to install the application. 而且 App 的路径都正确的,那么重启下电脑看看。

Webview/Hybrid/Safari app 支持

  • 确保真机上的'Web Inspector'激活了。
  • 确保你激活了模拟器上的 Safari 的开发模式。Safari - Advance Preferences- Developer menu

FirefoxOS

  • 确保 Boot-to-Gecko 模拟器启动并运行着。
  • 确保模拟器的屏幕是亮着并没用锁屏的 (可能需要重启 B2G).

告诉社区

如果你通过以上方法都不能解决问题,你可以做:

如果你可以确认你发现的是个 bug,来给我们报 bug 吧。issue tracker

如果你的 Appium 无法正常工作,然后错误信息不够清晰,欢迎加入mailing list。 给大家发邮件询问,但是请包含以下信息:

  • 你是如何运行 Appium 的 (Appium.app, npm, source)
  • 客户端和服务端的错误信息
  • 除了上述, 贴出 Appium 服务器端的输出也非常重要,特别是运行在 verbose 模式。这样我们可以分析诊断问题在哪里。

Known Issues

  • 如果你从 Node 官网安装的 Node,那需要你使用 sudo 运行 npm。这其实并不好,试试看用 brew install node
  • 使用 proxy,Webview 可以支持 iOS 真机。 见 discussion.
  • 有时候, iOS 的 UI 元素在定位到之后几毫秒会突然变得无效。这会导致一个类似(null) cannot be tapped的错误。唯一的解决方法就是把 finding-and-acting 的代码放到 retry 块里。参见 mobile: findAndAct finding elements doc page
  • 如果你通过 MacPorts 安装的 node 和 npm,那么确保 MacPorts 的 bin 文件夹 (/opt/local/bin) 被添加到环境变量 PATH 中去。

Specific Errors

Action Error Resolution
Running reset.sh xcodebuild: error: SDK "iphonesimulator6.1" cannot be located 安装 iPhone 6.1 SDK 或者 使用单独的 SDK 构建 待测应用 比如: grunt buildApp:UICatalog:iphonesimulator5.1
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 1 条回复 时间 点赞

testerhome 的 git 我重新整理过了, 你们同步下吧.
然后放进去这个文章, 我打算本周发起 pull request
包含了 monkey 之前的更新, 你的这个文章, 还有我的一个代码 merge

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