项目作者: asura-pro

项目描述 :
高级语言: Scala
项目地址: git://github.com/asura-pro/asura.git
创建时间: 2018-06-01T15:22:26Z
项目社区:https://github.com/asura-pro/asura

开源协议:MIT License

下载


Indigo

( ⊙ o ⊙ )

这个代码库包含两部分内容, 一部分是 indigo 的后端部分. 另一部分 是一个新的集成UI测试工具.

Indigo UI

这一部分是在 Karate UI 的基础上做了修改和扩展.

扩展特性包括:

  • 支持同时操作多个driver, 且自由切换(适用于多人协作, 多人会议, 基于Electron的应用多Webview切换这些场景)
  • 新增了一组 操作系统原生操作指令
  • 新实现的内置 android driver
  • 服务化: 后台运行, 控制多个浏览器或设备, 推送数据, 提高响应速度. 可以直接作为agent 跟浏览器打包容器部署. 本身也是个代理服务器.
  • 集成 ffmpeg, opencv, tesseract, 提供图像识别和OCR的基础指令
  • 内置一个 scrcpy 的 java/scala 实现, 及以此为基础的…
  • Web IDE…

如何使用:

适用于Windows, Mac, Linux平台. 所有依赖已经打包到一个文件中, 下载即可使用.

  1. 需要 java11 及以上运行环境
  2. 下载最新发布版本, 链接: https://pan.baidu.com/s/1b7Z47TkaQoSpdcRCaCuUEQ 提取码: e6ym
  1. # java -jar indigo.jar
  2. _ _ _
  3. (_)_ _ __| (_)__ _ ___
  4. | | ' \/ _` | / _` / _ \
  5. |_|_||_\__,_|_\__, \___/
  6. |___/
  7. 用法:
  8. indigo [-hVv] [-c=file] [command]
  9. 描述:
  10. 适用于 Web,Android 的自动化工具...
  11. 选项:
  12. -c, --config=file 通过配置文件启动, 待实现.
  13. 如果指定了配置文件其他子命令将忽略.
  14. -v, --verbose 指定多个 -v 选项以打印更多调试信息. 比如, `-v -v -v` or
  15. `-vvv`.
  16. -h, --help 显示帮助信息并退出.
  17. -V, --version 显示版本信息并退出.
  18. 命令:
  19. karate 运行原生karate指令
  20. chrome 托管多个chrome来进行UI自动化
  21. electron Electron应用UI自动化
  22. monkey 运行monkey任务

Chrome

  1. # java -jar indigo.jar chrome -h
  2. 托管多个chrome来进行UI自动化
  3. 用法:
  4. indigo chrome [-hsVv] [--disable-proxy] [--enable-push-logs]
  5. [--enable-push-screen] [--enable-push-status] [--enable-server]
  6. [--headless] [--not-remove-user-data-dir] [--core-count=num]
  7. [--init-count=num] [--max-count=num] [-p=port] [--push-ip=ip]
  8. [--push-port=port] [--push-status-interval=secs] [--push-url=url]
  9. [--user-data-dir=dir] [--user-data-dir-prefix=dir]
  10. [--vnc-pass=***] [--vnc-ws-port=port] [--options=option[,
  11. option...]]... [--remote-debugging-port=port[,port...]]...
  12. 描述:
  13. 托管多个chrome来进行UI测试
  14. 选项:
  15. -p, --server-port=port 本地服务端口. 默认: 8080.
  16. --enable-server 启动本地服务. 默认启动.
  17. -s, --start 启动新的浏览器实例. 默认 true. 如果是 `false`, 则会
  18. 尝试连接`--remote-debugging-port`指定的端口号实
  19. 例.
  20. --init-count=num 初始启动的浏览器数量, 默认1个.
  21. --core-count=num 保持活跃的浏览器数量, 默认1个.
  22. --max-count=num 允许启动的最大浏览器数量, 默认1个.
  23. --remote-debugging-port=port[,port...]
  24. 浏览器远程调试端口, 默认: [9222]. 如果
  25. 'start=true' 并且仅有一个实例需要启动的时候这个这
  26. 个选项才有效. 如果 'start=false', 会直接连接到这
  27. 些端口列表.
  28. --user-data-dir=dir 浏览器用户目录, 仅启动一个实例时有效
  29. --not-remove-user-data-dir
  30. 浏览器关闭时不删除用户目录下的数据
  31. --user-data-dir-prefix=dir
  32. 浏览器用户目录前缀, 启动多个浏览器时需要. 默认是
  33. `target`目录.
  34. --headless 启动无头浏览器.
  35. --options=option[,option...]
  36. 其他的浏览器启动选项. 例: '--options "--incognito,
  37. --mute-audio,--use-fake-ui-for-media-stream,
  38. --use-fake-device-for-media-stream"'.
  39. --disable-proxy 关闭本地代理, 浏览仅允许本地访问, 通过代理可以远程
  40. 访问, 默认开启.
  41. --vnc-pass=*** VNC密码. 如果本地启动了 VNC 服务器, 可通过本服务在
  42. 浏览器中访问
  43. --vnc-ws-port=port 本地 websockify 端口号. 默认: 5901. Websocket
  44. 理, 通过 noVnc 访问远程桌面.
  45. --push-ip=ip 本地IP地址, 用于推送到服务器.
  46. --push-port=port 本地端口号, 用于推送到服务器.
  47. --push-url=url 服务器连接串, 用于推送信息和接收控制指令, 消息协议
  48. 请查看文档. 支持四种传输协
  49. 议:'http','ws','tcp','unix'. 例: `unix:
  50. ///var/run/indigo.sock`, `tcp://192.168.1.1:
  51. 8080`.
  52. --enable-push-status 开启推送浏览器状态信息到服务器.
  53. --enable-push-screen 开启推送浏览器屏幕截图到服务器.
  54. --push-status-interval=secs
  55. 推送浏览器状态信息的时间间隔, 默认: 30 秒, 屏幕截图
  56. 间隔为该时间5倍.
  57. --enable-push-logs 开启推送日志信息, 日志信息包括 Chrome DevTools
  58. Protocol 的命令信息和脚本的执行信息.
  59. -v, --verbose 指定多个 -v 选项以打印更多调试信息. 比如, `-v -v
  60. -v` or `-vvv`.
  61. -h, --help 显示帮助信息并退出.
  62. -V, --version 显示版本信息并退出.

Android

  1. # java -jar indigo.jar android -h
  2. Android 自动化
  3. 用法:
  4. indigo android [-hVv] [--always-on-top] [--disable-appium-server]
  5. [--disable-display] [--disable-scrcpy]
  6. [--disable-scrcpy-control] [--enable-appium-http]
  7. [--enable-appium-mjpeg] [--adb-host=host] [--adb-interval=secs]
  8. [--adb-path=path] [--adb-port=port] [--apk=path]
  9. [--appium-http-port=port] [--appium-mjpeg-port=port]
  10. [--bit-rate=num] [--display-id=num] [--max-fps=num] [-p=port]
  11. [-s=s] [--socket-name=name] [--window-width=num]
  12. 描述:
  13. android 自动化
  14. 选项:
  15. -p, --server-port=port 本地服务端口. 默认: 8080.
  16. --adb-host=host adb server 的地址. 默认: localhost.
  17. --adb-port=port adb server 的端口. 默认: 5037.
  18. --adb-path=path adb程序的完整路径地址. 默认使用环境变量中的`adb`.
  19. --apk=path 要推送的apk文件路径. 默认使用打包好的.
  20. -s, --serial=s 仅链接指定的序列号设备.
  21. --adb-interval=secs 设备检查间隔. 默认: 5 秒.
  22. --disable-display 禁用设备屏幕镜像窗口.
  23. --always-on-top 使镜像窗口不被其他窗口覆盖.
  24. --window-width=num 窗口初始宽度. 默认: 280.
  25. --socket-name=name Local socket 名称. 默认: asura.
  26. --disable-appium-server
  27. 禁用 appium 服务.
  28. --enable-appium-http 启用原生的 appium http 服务.
  29. --appium-http-port=port
  30. appium http 服务端口号. 默认: 6790.
  31. --enable-appium-mjpeg 启用原生的 appium mjpeg 服务.
  32. --appium-mjpeg-port=port
  33. appium mjpeg 服务端口号. 默认: 7810.
  34. --disable-scrcpy 禁用屏幕镜像.
  35. --disable-scrcpy-control
  36. 禁用远程控制.
  37. --bit-rate=num 指定视频码率 bits/s. 默认: 8000000.
  38. --max-fps=num 最大帧数, Android 10 及以上有效.
  39. --display-id=num 要镜像的设备显示器id. 默认: 0.
  40. -v, --verbose 指定多个 -v 选项以打印更多调试信息. 比如, `-v -v
  41. -v` or `-vvv`.
  42. -h, --help 显示帮助信息并退出.
  43. -V, --version 显示版本信息并退出