Update docs to work with slate

This commit is contained in:
bootstraponline 2014-04-19 17:01:16 -04:00
Родитель 3e05a94efc
Коммит 3a31a37fca
21 изменённых файлов: 81 добавлений и 111 удалений

Просмотреть файл

@ -1,3 +1,5 @@
# Android Coverage
Android 覆盖率需要使用模拟器或者 root 过的机器。使用 instrument target 构建应用,比如 `$ ant instrument`
`androidCoverage` 传给你设备的 capabilities并设置为你的 instrument 的 class。
@ -15,8 +17,6 @@ Appium 会用类似的命令启动应用:`adb shell am instrument -e coverage
mobile :endCoverage, intent: 'com.example.pkg.END_EMMA', path: '/mnt/sdcard/coverage.ec'
```
--
`AndroidManifest.xml` 里定义 instrumentation 和 broadcast 接收器。
```xml
@ -100,7 +100,7 @@ public class MyInstrumentation extends Instrumentation {
}
```
#### 报表
### 报表
`ant instrument` 命令会生成一个 `coverage.em` 文件。你可以使用 `mobile :endCoverage` 命令来可以下载 某次运行的 coverage.ec 文件。 注意:你可以有很多个 coverage.ec 文件。你可以用下面的命令将他们合并起来:

Просмотреть файл

@ -1,5 +1,4 @@
Appium 服务关键字
==========
# Appium 服务关键字
|关键字|描述|实例|
|----|-----------|-------|
@ -10,9 +9,7 @@ Appium 服务关键字
|`newCommandTimeout`|设置在接受到有效命令之前结束进程并退出的时间|比如. `60`|
|`launch`|在Appium已经安装的情况下可自动启动app。默认是`true`|`true`, `false`|
--
#### Android特有
### Android特有
|关键字|描述|实例|
|----|-----------|-------|
@ -22,9 +19,7 @@ Appium 服务关键字
|`device-ready-timeout`| 设置一个模拟器或真机准备就绪的时间|比如`5`|
|``compressXml``| 参考[setCompressedLayoutHeirarchy(true)](http://developer.android.com/tools/help/uiautomator/UiDevice.html#setCompressedLayoutHeirarchy(boolean\))| `true`|
--
#### iOS特有
### iOS特有
|关键字|描述|实例|
|----|-----------|-------|
@ -32,5 +27,4 @@ Appium 服务关键字
|`deviceName`| iOS Simulator 的设备名|比如. `iPhone Retina (3.5-inch)`|
|`language`| 为iOS的模拟器设置系统语言|比如. `fr`法语|
|`launchTimeout`| 在Appium运行失败之前设置一个等待instruments的时间|比如. `20000`毫秒|
|`locale`| 为iOS模拟器进行区域设置|比如. `fr_CA`法语|
|`locale`| 为iOS模拟器进行区域设置|比如. `fr_CA`法语|

Просмотреть файл

@ -1,5 +1,4 @@
名单
=======
# 名单
### 以下这些项目,鼓舞了我们,成就了 Appium。

Просмотреть файл

@ -1,6 +1,4 @@
元素定位与交互
=====================================
# 元素定位与交互
Appium支持一个Webdriver元素定位方法的子集
@ -17,8 +15,7 @@ https://github.com/appium/appium/blob/master/lib/uiauto/lib/mechanic.js#L29
对于Android下的元素对应, 可以参考
https://github.com/appium/appium/blob/master/lib/devices/android/bootstrap/src/io/appium/android/bootstrap/AndroidElementClassMap.java
例子
--------
## 例子
### 找到屏幕上所有的UIAButtons
@ -117,7 +114,7 @@ Python:
driver.find_elements_by_tag_name('tableCell')[5].click()
```
# FindAndAct<a name="findandact"></a>
## FindAndAct
你也可以通过一行命令来完成元素的查找和交互(只适用于IOS)
举个例子, 你可以通过一次调用来实现查找一个元素并点击它, 使用的命令是`mobile: findAndAct`
@ -141,8 +138,7 @@ driver.execute_script(js_snippet, args)
备注: driver.execute_script() 可以在 [Automating Mobile Gestures: Alternative access method](https://github.com/appium/appium/wiki/Automating-mobile-gestures)) 找到说明
使用Appium Inspector来定位元素
--------
## 使用Appium Inspector来定位元素
(翻译备注: 这个工具目前只有Mac版本, 如果你使用的是windows, 可以使用android自带的traceview工具来获得元素的位置)
@ -163,4 +159,4 @@ UI导航器, 预览, 录制与刷新按钮, 和交互工具
要找到这个按钮的id, 在定位预览窗口中我点击了"show alert"按钮, Appium Inspector在UI导航窗口中高亮显示了这个元素, 然后展示了刚被点击按钮的id和元素类型
![Step 1](https://raw.github.com/appium/appium/master/assets/InspectorImages/Step2.png)
![Step 1](https://raw.github.com/appium/appium/master/assets/InspectorImages/Step2.png)

Просмотреть файл

@ -1,5 +1,5 @@
使移动手势自动化
==========================
# 使移动手势自动化
当selenium webDriver 提供某些交互功能的支持时它的参数并不总是能很容易的映射到底层自动化设备比如ios中的UIAutomation所提供的功能。为此Appium在WebDriver 之上为移动手势增加了额外的命令和参数。
* **点击**(在屏幕或者元素上)选项

Просмотреть файл

@ -1,5 +1,4 @@
Selenium Grid
======================
# Selenium Grid
使用 <b>"--nodeconfig"</b> 服务器参数,你可以在本地 selenium grid 里注册你的 appium 服务器。

Просмотреть файл

@ -1,5 +1,4 @@
Appium grunt 命令
=============
# Appium grunt 命令
[Grunt](http://gruntjs.com) 是 Node.js 的 Make! 我们用它来自动化所有的 appium 开发任务。 下面就是你能做的:
@ -27,8 +26,7 @@ Appium grunt 命令
|grunt generateAppiumIo|将 README.md 转成 appium.io 的 getting-started.html|
|grunt setConfigVer:&lt;device&gt;|将 package.json 里面 appium 的版本号和对应设备写入 `.appiumconfig.json` 文件|
其他
--------
## 其他
`grunt buildApp` 默认使用 iPhone 6.1 模拟器的 SDK 来构建应用。你可以传其他的 SDK 给 grunt 命令。
(用 `xcodebuild -showsdks` 找出你所有的 sdk:

Просмотреть файл

@ -1,13 +1,11 @@
自动化混合应用
======================
# 自动化混合应用
Appium 其中一个理念就是你不能为了测试应用而修改应用。为了符合这个方法学,我们可以使用 Selenium 测试传统 web 应用的方法来测试混合 web 应用 (比如iOS 应用里的元素 "UIWebView" )这是有可能的。这里会有一些技术性的复杂Appium 需要知道你是想测试原生部分呢还是web部分。幸运的是我们还能遵守 WebDriver 的协议。
* [混合 iOS 应用](#ios)
* [混合 Android 应用](#android)
<a name="ios"></a>自动化混合 iOS 应用
--------------------------
## 自动化混合 iOS 应用
在你的 Appium 测试里,你需要以下几步来和 web 页面交涉:
@ -17,7 +15,9 @@ Appium 其中一个理念就是你不能为了测试应用而修改应用。为
1. 使用你想访问的这个 web 视图的 id 作为参数,调用 [POST session/:sessionId/window](http://code.google.com/p/selenium/wiki/JsonWireProtocol#/session/:sessionId/window)
1. (这会将你的 Appium session 放入一个模式, 在这个模式下所有的命令都会被解释成自动化web视图而不是原生的部分。比如当你运行 getElementByTagName它会在 web 视图的 DOM 上操作,而不是返回 UIAElements。当然一个 Webdriver 的方法只能在一个上下文中有意义,所以如果在错误的上下文,你会收到错误信息。)
1. 如果你想停止 web 视图的自动化,回到原生部分,你可以简单地使用 `execute_script` 调用 `"mobile: leaveWebView"` 方法来离开 web 层。
## 在 iOS 真机上运行
appium 使用一个远程调试器建立连接来实现和 web 视图的交互。当在模拟器上执行下面例子的时候,我们可以直接建立连接,因为模拟器和 appium 服务器在同一台机器上。
当在真机上运行用例时appium 无法直接访问 web 视图,所以我们需要通过 USB 线缆来建立连接。我们使用 [ios-webkit-debugger-proxy](https://github.com/google/ios-webkit-debug-proxy)建立连接。
@ -142,13 +142,12 @@ And(/^I click a webview button $/) do
@driver.find_element(:css, ".green_button").click
end
```
#### 用 ruby 调试 web 视图:
### 用 ruby 调试 web 视图:
我在我的帮助类里创建了一个快速方法来定位web元素无论它在哪一个窗口视图。
(这非常有帮助,特别是你的 webview 的 id 变化或者你用同一份代码来测试 Android 和 iOS。
https://gist.github.com/feelobot/7309729
<a name="android"></a>自动化混合 Android 应用
--------------------------
## 自动化混合 Android 应用
Appium 通过 Chromedriver 内建混合应用支持。Appium 也可以使用 Selendroid 做为 4.4 之前的设备对 webview 支持的背部引擎。(你需要在 desired capability 里指定 `"device": "selendroid"`)。然后:

Просмотреть файл

@ -1,5 +1,5 @@
部署ios app 到手机上
=====================================
# 部署ios app 到手机上
准备在真机上执行appium测试, 需要如下准备:
1. 用特殊的设备参数来构建app

Просмотреть файл

@ -1,9 +1,8 @@
自动化手机网页应用
======================
# 自动化手机网页应用
如果你正对于如何在iOS的Safari或Android上的Chrome做网页应用的自动化那么Appium能够帮助你。你可以写一个最普通的WebDriver测试代码就像使用Selenium服务一样使用Appium来满足需求。
###iOS模拟器上的Safari浏览器
##iOS模拟器上的Safari浏览器
首先我们需要先确认在你的Safari浏览器的设置中开启了开发者模式这样Safari的远程调试端口也会被同时打开。
@ -25,7 +24,7 @@
<b>提示:</b> 目前针对iOS7版本的上ios-webkit-debug-proxy有一个问题。[a bug](https://github.com/google/ios-webkit-debug-proxy/issues/38)
#### 前期设置
### 前期设置
当你要在真机上的Safari中执行你的测试脚本之前你需要先注意以下几点
*安装并正常运行<b>ios-webkit-debug-proxy</b>(具体可以参考(s[hybrid docs](https://github.com/appium/appium/blob/master/docs/hybrid.md))
@ -59,11 +58,11 @@ $ ./reset.sh --ios --real-safari --code-sign '<code signing idendity>' --profile
$ node /lib/server/main.js -U <UDID>
```
#### 执行你的测试
### 执行你的测试
如果要在safari下的运行你的测试, 只需要简单的配置app为safari即可
##### Java 举例
### Java 举例
```java
//setup the web driver and launch the webview app.

Просмотреть файл

@ -1,6 +1,6 @@
#### 跨平台的移动测试方法
# 跨平台的移动测试方法
##### 移动测试的重置方法reset
### 移动测试的重置方法reset
reset方法会重置待测应用的状态
@ -16,9 +16,9 @@ mobile :reset
@driver.execute_script 'mobile: reset'
```
#### Android下的移动测试方法
## Android下的移动测试方法
##### 移动测试的按键事件keyevent
### 移动测试的按键事件keyevent
[KeyEvent](http://developer.android.com/reference/android/view/KeyEvent.html) 提供了发送按键码(keycode)到Android的能力.
@ -42,7 +42,7 @@ mobile :keyevent, keycode: 82
@driver.execute_script 'mobile: keyevent', :keycode => 82
```
#### 移动测试的Find方法
### 移动测试的Find方法
Java

Просмотреть файл

@ -1,5 +1,5 @@
Appium在真机上
======================
# Appium在真机上
Appium已经初步支持真机测试。
如果要在真机上执行测试,你将要做如下准备:
@ -12,16 +12,15 @@ Appium已经初步支持真机测试。
4. 一台安装了XCode和XCode Command Line Developer Tools的Mac机器
Provisioning Profile
---
## Provisioning Profile
要在真机上测试就需要一个有效的iOS开发者的Distribution Certificate and Provisioning Profile。你可以在这个上面找到配置这些的相关信息[Apple documentation](http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Conceptual/YourFirstAppStoreSubmission/TestYourApponManyDevicesandiOSVersions/TestYourApponManyDevicesandiOSVersions.html)
同样的,你还需要对你的应用签名,更多的信息可以查看[sign your app](http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Conceptual/YourFirstAppStoreSubmission/ProvisionYourDevicesforDevelopment/ProvisionYourDevicesforDevelopment.html#//apple_ref/doc/uid/TP40011375-CH4-SW1).
你必须使用Xcode的执行按钮来安装你的应用
使用Appium运行你的测试
---
## 使用Appium运行你的测试
一旦你的设备和应用设置好了之后,你就能够用如下的命令在你的机器上执行测试:
@ -31,8 +30,8 @@ node . -U <UDID> --app <bundle_id>
这将会启动Appium并且开始在真机上测试应用。
疑问解答思路
---
## 疑问解答思路
0. 确认UDID已经正确的在xcode organizar或itunes中设置了。很长的字符串20多个字符串
0.确认你测试代码中的测试对象设备的设置
0. 再次确认你从instruments启动你的自动化测试

Просмотреть файл

@ -1,11 +1,10 @@
在 Linux 上运行 Appium
=======================
# 在 Linux 上运行 Appium
# 限制
### 限制
如果你在 Linux 上使用 Appium 那么你没法使用已经构建好的 '.app',那是为 OS X 准备的。 另外由于 Appium 在测试 iOS 应用时 依赖 OS X 特有的库, 所以你也没有办法测试在 Linux 上测试 iOS 应用。
# 配置
## 配置
首先,安装版本高于或等于 0.8 的 nodejs。可以根据 [instructions for your flavor of linux](https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager) 进行安装。
@ -17,7 +16,7 @@
现在你可以运行 Appium 了, 在你 checkout 出来的 Appium 目录里, 运行 `.reset.sh --android` 它会帮助你安装好所有的依赖。
# 运行 Appium
## 运行 Appium
运行测试前, 你需要启动一个 API Level 大于等于 17 的 Android 模拟器或者连接一个系统是 4.1 以上的 Android 真机。然后在 Appium 目录运行
@ -26,7 +25,7 @@
你可以在 [server documentation](server-args.cn) 找到所有的命令行参数。
# 备注
## 备注
* There exists a hardware accelerated emulator for android, it has it's own
limitations. For more information you can check out this
Android 有一些硬件加速的模拟器,这些模拟器有自己的限制。你可以在 [page](android-hax-emulator.cn) 找到更多的信息。

Просмотреть файл

@ -1,16 +1,14 @@
在 Mac OS X 上使用 Appium
=======
# 在 Mac OS X 上使用 Appium
在 OS X 上, Appium 支持 iOS 和 Android 测试
<a name="ios"></a>系统配置 (iOS)
--------
## 系统配置 (iOS)
* Appium 需要 Mac OS X 10.7 推荐 10.8。 (经过测试, 10.9 也能工作。)
* 确保 Xcode 和 iOS SDK 都已经安装好了。 (当前 Appium 支持 Xcode 4.6.3/iOS 6.1 和 Xcode 5/iOS 7.0。 注意不推荐在基于 Xcode 5 下且低于 7.0 的 iOS 版本进行测试。 参照下篇可以获取更多信息)
* 你需要授权 iOS 模拟器的使用。如果你是通过 NPM 安装的 Appium那么你可以运行 `sudo authorize_ios` `authorize_ios`)是来自 Appium npm 包里的一个二进制执行文件。如果你是从源代码运行 Appium那么你可以简单的使用 `sudo grunt authorize`。如果你使用`Appium.app`, 那你只要用界面来操作。
<a name="ios_multiple"></a>使用多种 iOS SDK 进行测试
-----------
## 使用多种 iOS SDK 进行测试
Appium 使用苹果提供的 `instruments` 来启动 iOS 模拟器,默认它会使用当前安装的 Xcode 和该 Xcode 下安装好的最高版本的 iOS SDK。这就意味着如果你想测试 iOS 6.1 但是你安装了 iOS 7.0 那么 Appium 会强制使用 7.0 的模拟器。 唯一的方法就是安装多个Xcode然后在安装不同的 SDK。然后在启动 Appium 前,切换到你要测试的特定的版本。
@ -22,9 +20,7 @@ Appium 使用苹果提供的 `instruments` 来启动 iOS 模拟器,默认它
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/
<a name="android"></a>系统配置 (Android)
--------
## 系统配置 (Android)
* 确保你已经安装了 [Android SDK installed](http://developer.android.com/sdk/index.html)。
* 确保你安装的 Android SDK API 大于等于 17。你可以运行 Android SDK 管理器(`android` 然后在额外的包里选择你要安装的 API。
@ -37,4 +33,4 @@ Appium 使用苹果提供的 `instruments` 来启动 iOS 模拟器,默认它
我们需要 Maven 来支持 Selendroid 借助 Selendroid Appium 可以在低于 4.2 的 Android 版本里运行。
* 确保你的 AVD 已经配置好了最新的 Android 版本 (一个可以运行的 UIAutomator至少 4.1 )。你可以使用 Android SDK tool 来创建 AVD。 别忘记给 AVD 起个好记的名字,下次你可以用它来启动模拟器并在模拟器上运行测试。
* 确保你使用的 AVD 里面的 `config.ini` 有这条指令 `hw.battery=yes`
* Android 有一些硬件加速的模拟器,这些模拟器有自己的限制。你可以在 [page](android-hax-emulator.cn) 找到更多的信息。
* Android 有一些硬件加速的模拟器,这些模拟器有自己的限制。你可以在 [page](android-hax-emulator.cn) 找到更多的信息。

Просмотреть файл

@ -1,13 +1,10 @@
在windows上运行appium
=======================
# 在windows上运行appium
# 限制
### 限制
如果你在windows上安装appium你没法使用预编译专用于OS X的.app文件你也将不能测试IOS apps因为appium依赖OS X专用的库来支持IOS测试。这意味着你只能通过在mac上来运行IOS的app测试。这点限制挺大。
# 开始安装
## 开始安装
1. 安装[nodejs](http://nodejs.org/download/) 0.8版本及以上, 通过官方的安装程序来安装。
@ -15,7 +12,6 @@
3. 安装java的JDK并设置`JAVA_HOME` 变量为你的JDK目录。
4. 安装[Apache Ant](http://ant.apache.org/bindownload.cgi)
或者直接使用Android Windows SDK自带的ant地址在eclipse\plugins目录你需要把这个目录加到你的系统PATH变量中
@ -27,34 +23,34 @@
现在,你已经下载安装了所有的依赖,开始运行
reset.bat
# 运行Appium
### 运行Appium
要在windows上运行测试用例你需要先启动Android模拟器或者连接上一个API Level17以上的android真机。
然后在命令行运行appium
node .
# 备注
### 备注
* 你必须带上--no-reset和--full-reset标记以用于windows上的android
* 有一个硬件加速模拟器用于android但是它有自己的一些限制如果你想了解更多请参考[页面](android-hax-emulator.cn)
* 确保在你的AVD的`config.ini`中有一个配置项为`hw.battery=yes`
# 最简略的安装方式
### 最简略的安装方式
出于对官方文档的尊重,我按照原文翻译,如下介绍我的安装心得。官方提到的一些工具,其实并不需要安装。
下面介绍我已经测试过的安装和使用过程
# 安装appium
### 安装appium
1. 安装nodejs
2、使用npm安装appiumnpm install -g appium
# 运行appium
### 运行appium
启动appium直接运行appium 即可。
# 更新appium
### 更新appium
通过`npm install -g appium` 来更新appium即可

Просмотреть файл

@ -1,8 +1,7 @@
執行測試
=============
# 執行測試
## 測試前的準備 (iOS)
<a name="prep-ios"></a>測試前的準備 (iOS)
-----
在模擬器上測試apps必須要用模擬器專用的編譯器例如說使用下列的命令來編譯 Xcode 項目:
> xcodebuild -sdk iphonesimulator6.0
@ -11,12 +10,12 @@
如果需要,你可以把.app 目錄壓縮成一個zip壓縮檔Appium 會自行解壓縮。讓你能方便在非本地運行Appium。
<a name="prep-android"></a>測試前的準備 (Android)
------
## 測試前的準備 (Android)
用Appium去執行你的.apk檔其實沒什麼特別需要注意的事項。如果需要你可以把它壓縮成zip壓縮檔。
<a name="run-ios"></a>用Appium測試你的app (iOS)
------
## 用Appium測試你的app (iOS)
目前最好的測試方式請參照測試範例:
[Node.js](https://github.com/appium/appium/tree/master/sample-code/examples/node) | [Python](https://github.com/appium/appium/tree/master/sample-code/examples/python) | [PHP](https://github.com/appium/appium/tree/master/sample-code/examples/php) | [Ruby](https://github.com/appium/appium/tree/master/sample-code/examples/ruby) | [Java](https://github.com/appium/appium/tree/master/sample-code/examples/java)
@ -43,8 +42,8 @@
在你選擇的WebDriver庫裡設定remote session使用上述的環境參數然後使用端口 4723來連接本地服務器 (或著是使用你在Appium啟動時所設定的任意端口)。現在你已經設置完成了!
<a name="run-android"></a>用Appium測試你的app (Android)
-----
## 用Appium測試你的app (Android)
首先先確定你有一個而且必須是只能一個Android模擬器或著設備連接著。如果你輸入`adb devices`你應該只看到一個設備連接著。這將是Appium所用來測試的設備。當然要連接一個設備你需要準備好一個Android AVD (參考 [系統設置](https://github.com/appium/appium/blob/master/docs/system-setup.md#android) 以了解更多). 如果Android SDK工具在你的路徑下你可以簡單的執行:
emulator -avd <我的Avd名稱>
@ -81,8 +80,8 @@
在你選擇的WebDriver庫裡設定remote session使用上述的環境參數然後使用端口 4723來連接本地服務器 (或著是使用你在Appium啟動時所設定的任意端口)。現在你已經設置完成了!
<a name="run-selendroid"></a>用Appium測試你的app (Android 設備 &lt; 4.2, 以及混合app測試)
-----
## 用Appium測試你的app (Android 設備 &lt; 4.2, 以及混合app測試)
低於4.2版本的Android設備 (API Level 17) 沒有安裝Google 的[用戶界面自動化框架/UiAutomator framework](http://developer.android.com/tools/help/uiautomator/index.html).下面的範例是早期Appium在這些設備上的測試方法。對於早期的設備以及使用混合模式(webview-based)製作的apps, Appium 包含了另一種自動化測試後端[Selendroid](http://selendroid.io/).
要使用Selendroid, 只需要在之前提到的環境參數上稍作修改即可,把'Android' 換成 'Selendroid':

Просмотреть файл

@ -1,5 +1,4 @@
Appium 服务器参数
==========
# Appium 服务器参数
使用方法: `node . [标志]`

Просмотреть файл

@ -1,6 +1,5 @@
Appium 故障调试
# Appium 故障调试
======================
如果你遇到问题,先不要提交 ticket 到 github 或者发信去 appium-disscuss 邮件列表求教,这里教你如何处理。
## 一般问题

Просмотреть файл

@ -6,19 +6,18 @@ Don't use the `===` underline method of creating headers.
## Subheaders
`##` is used to write subheaders. Don't use the `---` underline method of
creating
sub headers.
creating sub headers.
### Regular headers
`###` is used for headers that don't appear in the table of contents.
Don't use h4 `####`, h5 `#####`, or h6 `######`.
#### Line breaks
### Line breaks
Don't use line breaks such as `--` or `---`. This will confuse Slate.
## Linking
### Linking
Link to another document using this syntax: `[link text](filename.md)`

Просмотреть файл

@ -29,7 +29,7 @@ application's .app directory
# Android and iOS
@driver.execute_script 'mobile: pullFile', {path: '/Library/AddressBook/AddressBook.sqlitedb'} #=> /Library/AddressBook/AddressBook.sqlitedb
#iOS only
# iOS only
@driver.execute_script 'mobile: pullFile, {path: '/UICatalog.app/logfile.log'} #=> /Applications/12323-452262-24241-23-124124/UICatalog.app/logfile.log
```

Просмотреть файл

@ -43,7 +43,7 @@ This will start Appium and have Appium use the device to test the app.
0. Double check that you can invoke your automation from instruments.
0. Make sure instruments in closed already
# Appium on real Android devices
## Appium on real Android devices
Hooray! There's nothing extra to know about testing real Android devices: it
works exactly the same as testing on emulators. Make sure that your device