NetEaseGame/ATX 的MD

# ATX(AutomatorX) (中文版)
[![Build Status](https://travis-ci.org/NetEaseGame/ATX.svg?branch=master)](https://travis-ci.org/NetEaseGame/ATX)
[![Documentation Status](https://readthedocs.org/projects/atx/badge/?version=latest)](http://atx.readthedocs.org/en/latest/?badge=latest)
[![PyPI](https://img.shields.io/pypi/v/atx.svg)](https://pypi.python.org/pypi/atx)
[![PyPI](https://img.shields.io/pypi/l/atx.svg)]()
[![Gitter](https://badges.gitter.im/codeskyblue/ATX.svg)](https://gitter.im/codeskyblue/ATX?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)html

## Introduction (簡介)
ATX(AutomatorX) 是一款開源的自動化測試工具,支持測試iOS平臺和Android平臺的原生應用、遊戲、Web應用。
使用Python來編寫測試用例,混合使用圖像識別,控件定位技術來完成遊戲的自動化。附加專用的IDE來完成腳本的快速編寫。node

## Hope (願景)
但願該項目可讓手機應用測試自動化起來,讓測試人員擺脫那些枯燥的重複性工做。python

## 重要說明
新版本以採用新的uiautomator2替換到原來的[atx-uiautomator](https://github.com/openatx/atx-uiautomator). 歷史版本能夠經過Tag查看[tag:1.1.3](https://github.com/NetEaseGame/ATX/tree/1.1.3)
測試安卓應用前,須要先進行init操做android

```
python -muiautomator2 init
```ios

用於安卓和iOS原生應用測試的庫已經分離出來,能夠單獨使用(強烈推薦單獨使用,一來依賴少、穩定性高,二來寫代碼的時候還能自動補全)git

1. 對於Android應用的測試,若是不須要用到圖像識別,推薦使用這個項目[uiautomator2](https://github.com/openatx/uiautomator2)
1. 對於iOS應用的測試,若是不須要用到圖像識別,推薦使用這個項目[facebook-wda](https://github.com/openatx/facebook-wda)github

BTW: atx-webide已經不在維護web

## Features
- [x] 支持iOS, Android 雙平臺的原生應用,Web應用和遊戲
- [x] 支持經過圖像識別來定位元素的位置
- [x] 內置自動生成測試報告的功能
- [x] 網頁版的腳本編輯器,來幫助快速的寫代碼chrome

## Discuss (討論羣)
面向遊戲行業測試人員,固然也開放給國際友人(PS:中文不知道他們看得懂不)shell

- QQ: `499563266` PS: 由於咱們公司上不了QQ, 因此不會常常上
- 網易內部用戶加Popo羣 `1347390` 羣主 `hzsunshx`
- [Testerhome社區](https://testerhome.com/topics/node78)
- ~~[Gitter Chat Room](https://gitter.im/codeskyblue/AutomatorX?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)~~

## Limitation (限制)
- Python >= 2.7 && <= 3.6
- Android 4.1+
- iOS 9.0+ with Mac
- adb >= 1.0.36

## Installation (安裝)
準備Python虛擬環境 [Virtualenv]((http://www.jianshu.com/p/08c657bd34f1))

```bash
pip install virtualenv
virtualenv venv

# Linux or Mac
. venv/bin/activate

# Windows
venv\Scripts\activate.bat
```

安裝相關的python庫

```bash
# install the lastest version of atx
# If feed too slow use douban pypi mirror: -i https://pypi.doubanio.com/simple/
pip install --upgrade --pre atx

# install opencv dependencies
pip install opencv_contrib_python
```

**Android測試依賴**

- ADB

* [Windows adb安裝指南](https://github.com/NetEase/AutomatorX/wiki/Win-Installation)
* Mac上的adb能夠經過命令行安裝 `brew install android-platform-tools`

- [ATX手機助手.apk](https://o8oookdsx.qnssl.com/atx-assistant-1.0.4.apk)

該App爲自動化提供了輸入法的功能,屏幕常量等功能
命令行安裝 `python -m atx install atx-assistant`

**iOS測試依賴**

- WebDriverAgent

因爲WebDriverAgent更新過快,atx的一個依賴庫[facebook-wda](https://github.com/openatx/facebook-wda)還跟不上他更新的速度,下載完WDA後,請切換到這個版本

```
git reset --hard a8def24ca67f8a74dd709b899c8ea539c9c488ea
```

你的iPhone手機須要鏈接到Mac上,而後Mac安裝[WebDriverAgent](https://github.com/facebook/WebDriverAgent),一般對Xcode部署的人搭WDA的人會遇到很多問題,搞不定繼續參考這裏 <https://testerhome.com/topics/7220>

WDA成功啓動後,會生成一個用於ATX鏈接的http地址,好比`http://localhost:8100`

**檢查安裝是否成功**

```bash
# 查看atx版本號
python -m atx version
# 檢查環境配置是否正常
python -m atx doctor
```

**腳本編輯器**(可選)

爲了方便快速的寫出腳本,提供了三個Web編輯器。

- 自帶GUI

自帶的使用Tkinter寫的編輯器,只提供截圖功能,可是比較穩定,啓動方法 `python -m atx gui -s ${SERIAL or WDA_URL}`
使用 `python -m atx gui -h` 能夠查看更多的選項

- [weditor](https://github.com/openatx/weditor) __beta__ 針對Android和iOS原生應用快速定位元素,自動生成代碼

## Getting Started (必看)
* [快速入門文檔](docs/QUICKSTART.md)
* [~~如何使用內置的測試報告功能~~](atx/ext/report/README.md)
* [ATX資料快速索引](https://testerhome.com/topics/9091)
* [Testerhome上的ATX有關的文章列表](https://testerhome.com/topics/node78)

內置的測試報告暫時有點問題,最近沒時間去修復了。由於ATX底層使用的[uiautomator2](https://github.com/openatx/uiautomator2),測試報告能夠用底層庫自帶的 [SimpleHTMLReport](https://github.com/openatx/uiautomator2/tree/master/uiautomator2/ext/htmlreport)

## APIs (接口文檔)
* [經常使用接口](docs/API.md)
* [iOS的接口文檔](https://testerhome.com/topics/7204)

## Other (其餘)
* ATX自帶的命令行工具 <https://github.com/NetEase/AutomatorX/wiki/Command-Line-Tools>

## Known Issues (常見問題)
If you are having some issues please checkout [wiki](https://github.com/NetEase/AutomatorX/wiki/Common-Issues) first.

爲了不潛在的Python編碼問題,代碼文件都應該用UTF-8編碼格式保存。

- 測試中出現的彈窗如何處理?

《iOS彈窗如何自動處理》,僅供參考 https://testerhome.com/topics/9540

- 對於python2.7 字符串前應該加上u開頭,例如`u'你好'`

文件的開頭能夠加上下面這段代碼,強制使用python3的編碼體系(默認所有都是unicode)

```python
from __future__ import unicode_literals
```

- 對於python3的非windows系統

檢查一下`sys.stdout.encoding`的編碼是不是UTF-8,否則中文字符的輸出一般會有問題
解決辦法一般就是在bashrc文件中加入一行

```shell
export PYTHONIOENCODING=UTF-8
```

## ATX Extentions (擴展功能)
* WebView

目前僅限安卓, 具體參考 <https://testerhome.com/topics/7232>

例子代碼

```python
# coding: utf-8
import atx
from atx.ext.chromedriver import ChromeDriver

d = atx.connect()
driver = ChromeDriver(d).driver() # return selenium.driver instance
elem = driver.find_element_by_link_text(u"登陸")
elem.click()
driver.quit()
```

PS: 實現這個擴展並不複雜,簡單的封裝了一下selenium就搞定了

* Performance record (For Android)

性能測試直接使用了騰訊開源的[GT](http://gt.qq.com/)

PS: 剛寫好沒多久,你只能在最新的開發版中看到。有可能之後還會修改。

使用方法

1. 首先須要去騰訊GT的主頁上,將GT安裝到手機上

<http://gt.qq.com>

2. 代碼中引入GT擴展

```python
import atx
from atx.ext.gt import GT


d = atx.connect()

gt = GT(d)
gt.start_test('com.netease.my') # start test
# ... do click touch test ...
gt.stop_and_save()
```

3. 運行完測試後,代碼會保存到`/sdcard/GT/GW/`+`包名(com.netease.my)`目錄下,直接使用`adb pull`下載下來並解析

```
$ adb pull /sdcard/GT/GW/com.netease.my/
```

該部分代碼位於 [atx/ext/gt.py](atx/ext/gt.py), 這部分代碼目前在我看來,易用性通常般,但願使用者能根據具體狀況,進行修改,若是是修改具備通用性,歡迎提交PR,咱們會負責Review代碼。

## 代碼導讀
`connect` 函數負責根據平臺返回相應的類(`atx.drivers.android.AndroidDevice` or `atx.drivers.ios_webdriveragent.IOSDevice`)

圖像識別依賴於另外一個庫 [aircv](https://github.com/netease/aircv), 雖然這個庫還不怎麼穩定,也還湊合能用吧

每一個平臺相關的庫都放到了 目錄 `atx/device`下,公用的方法在`atx/device/device_mixin.py`裏實現。第三方擴展位於`atx/ext`目錄下。

## Related projects (相關的項目)
1. 基於opencv的圖像識別庫 <https://github.com/netease/aircv>
2. 感謝做者 <https://github.com/xiaocong> 提供的uiautomator的python封裝,相關項目已經fork到了

- <https://github.com/codeskyblue/android-uiautomator-server>
- <https://github.com/codeskyblue/atx-uiautomator>
3. Android input method <https://github.com/macacajs/android-unicode>
3. SikuliX <http://sikulix-2014.readthedocs.org/en/latest/index.html>
4. Blockly <https://github.com/codeskyblue/blockly>

## Contribution (參與貢獻)
如何才能讓軟件變的更好,這其中也必定須要你的參與才行,發現問題去在github提個issue, 必定會有相應的開發人員看到並處理的。文檔有錯誤的話,直接提Issue,或者提PR均可以。
因爲我日常使用該項目的機率並不怎麼高,全部很多問題即便存在我也不會發現,請養成看到問題提Issue的習慣,全部的Issue我都會去處理的,即便當時處理不了,等技術成熟了,我仍是會處理。可是若是不提交Issue,說不定我真的會忘掉。

BTW: 有開發能力的也能夠先跟開發者討論下想貢獻的內容,並提相應的PR由開發人員審覈。

## License (協議)This project is under the Apache 2.0 License. See the [LICENSE](LICENSE) file for the full license text.

相關文章
相關標籤/搜索