Skip to main content

Android UI inspection and automation tool

Project description

Android View Scope

Modern Android UI element inspector, similar to weditor functionality, built with Vue.js 3 + FastAPI

Features

  • Modern Tech Stack - Vue.js 3 + Element Plus + FastAPI
  • Device Management - Auto-detect and manage Android devices
  • Real-time Screenshots - High-quality PNG screenshot capture
  • Interactive Element Selection - SVG interaction layer, click to select UI elements
  • UI Hierarchy Structure - Complete interface hierarchy tree display
  • Code Generation - Auto-generate uiautomator2 locator code
  • Multiple Locator Strategies - Resource-ID, text, XPath and other methods

Project Structure

viewscope/
├── frontend/          # Vue.js 3 前端项目
│   ├── src/
│   │   ├── views/     # 页面组件
│   │   ├── stores/    # 状态管理 (Pinia)
│   │   └── components/
│   ├── package.json
│   └── vite.config.js
├── backend/           # FastAPI 后端项目  
│   ├── main.py        # 应用入口
│   ├── core/          # 核心模块
│   │   ├── device_manager.py  # 设备管理
│   │   ├── ui_analyzer.py     # UI分析
│   │   └── code_generator.py  # 代码生成
│   ├── api/           # API路由
│   │   ├── devices.py
│   │   ├── screenshot.py
│   │   └── ...
│   └── requirements.txt
├── start.bat          # 一键启动脚本
└── README.md

Quick Start

One-Click Launch (Recommended)

Simply install via pip and run:

pip install ViewScope
viewscope

The command will automatically:

  1. Start backend API service (port 8060+)
  2. Launch web interface in browser

Manual Development Setup

Backend

cd backend
pip install -r requirements.txt
python main.py

Frontend

cd frontend
npm install
npm run dev

Prerequisites

System Requirements

  • Windows 10/11 / macOS / Linux
  • Python 3.8+
  • Android SDK (ADB available)

Device Requirements

  • Android 4.4+
  • USB debugging enabled
  • Device connected via ADB

Environment Verification

# Check Python
python --version

# Check ADB
adb version

# Check device connection
adb devices

Usage

  1. Launch Application

    • Run viewscope command
    • Browser opens automatically
  2. Connect Device

    • Select device from top toolbar
    • Click "Refresh Current View" button
  3. Element Selection

    • Click any UI element in screenshot
    • Element details show in right panel
  4. Code Generation

    • Switch to "Code Generation" tab
    • View auto-generated uiautomator2 code
    • Click "Copy Code" button
  5. UI Hierarchy View

    • Switch to "UI Hierarchy" tab
    • Browse complete interface tree structure
    • Use search to locate specific elements

API Documentation

After starting backend service, visit http://localhost:8060/docs for complete API documentation.

Main Endpoints

  • GET /api/devices - Get device list
  • POST /api/screenshot - Take screenshot and get UI structure
  • GET /api/ui-hierarchy - Get UI hierarchy structure
  • POST /api/code/generate - Generate locator code

Troubleshooting

Common Issues

  1. Device Not Detected

    # Check ADB connection
    adb devices
    # Restart ADB service
    adb kill-server
    adb start-server
    
  2. Screenshot Failed

    • Ensure device has authorized USB debugging
    • Check if device is locked
    • Try reconnecting device
  3. Frontend Cannot Access Backend

    • Check if backend started on port 8060
    • Confirm firewall settings
    • Check browser console errors
  4. Dependency Installation Failed

    # Python dependencies
    pip install -r requirements.txt -i https://pypi.douban.com/simple
    

Development

Tech Stack

  • Frontend: Vue.js 3, Element Plus, SVG, Pinia
  • Backend: FastAPI, uiautomator2, Pillow
  • Build Tools: Vite, Python uvicorn

Development Environment

# Backend hot reload
uvicorn main:app --reload --host 0.0.0.0 --port 8060

# Frontend hot reload
npm run dev

Build & Deploy

Frontend Build

cd frontend
npm run build

Package Distribution

pip install build twine
python -m build
twine upload dist/*

Contributing

  1. Fork this repository
  2. Create feature branch (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add some AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Open Pull Request

License

This project is licensed under MIT License - see LICENSE file for details

Acknowledgments


For issues or suggestions, welcome to submit Issues or Pull Requests!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

viewscope-1.1.6.tar.gz (462.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

viewscope-1.1.6-py3-none-any.whl (469.6 kB view details)

Uploaded Python 3

File details

Details for the file viewscope-1.1.6.tar.gz.

File metadata

  • Download URL: viewscope-1.1.6.tar.gz
  • Upload date:
  • Size: 462.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for viewscope-1.1.6.tar.gz
Algorithm Hash digest
SHA256 4b9de293a8406e93b6c8f5587f7d284171903403190df5cc13bbff7dc03209b4
MD5 56fa98171c5acf98306ea3a1effd26b3
BLAKE2b-256 7bd1a5b651769f163df854a66387d5b6782f63f6f13f4d9af200ee774748fb70

See more details on using hashes here.

File details

Details for the file viewscope-1.1.6-py3-none-any.whl.

File metadata

  • Download URL: viewscope-1.1.6-py3-none-any.whl
  • Upload date:
  • Size: 469.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for viewscope-1.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 6599895c5ad759bdaaa8453215ee6bbc7e49f1e1c47b92ba7f068a1569e57ec4
MD5 30f48d6a0f7c6aa8f5376b501094bc2b
BLAKE2b-256 97caa0655ab3425ead36d220f43778c9abfbb1bee6b85368392d3d85bc3751cd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page