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:
- Start backend API service (port 8060+)
- 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
-
Launch Application
- Run
viewscopecommand - Browser opens automatically
- Run
-
Connect Device
- Select device from top toolbar
- Click "Refresh Current View" button
-
Element Selection
- Click any UI element in screenshot
- Element details show in right panel
-
Code Generation
- Switch to "Code Generation" tab
- View auto-generated uiautomator2 code
- Click "Copy Code" button
-
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 listPOST /api/screenshot- Take screenshot and get UI structureGET /api/ui-hierarchy- Get UI hierarchy structurePOST /api/code/generate- Generate locator code
Troubleshooting
Common Issues
-
Device Not Detected
# Check ADB connection adb devices # Restart ADB service adb kill-server adb start-server
-
Screenshot Failed
- Ensure device has authorized USB debugging
- Check if device is locked
- Try reconnecting device
-
Frontend Cannot Access Backend
- Check if backend started on port 8060
- Confirm firewall settings
- Check browser console errors
-
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
- Fork this repository
- Create feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add some AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open Pull Request
License
This project is licensed under MIT License - see LICENSE file for details
Acknowledgments
- uiautomator2 - Android automation framework
- Vue.js - Progressive JavaScript framework
- FastAPI - Modern Python web framework
- Element Plus - Vue.js UI component library
For issues or suggestions, welcome to submit Issues or Pull Requests!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file viewscope-1.1.0.tar.gz.
File metadata
- Download URL: viewscope-1.1.0.tar.gz
- Upload date:
- Size: 461.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e9a739145bd5b261a7c41bbd4b9df50da0f40be280f62d4a8191ec57c4b17a2c
|
|
| MD5 |
edc6846ca4807b20eb582407391861ac
|
|
| BLAKE2b-256 |
22d1af8755368a078a479d35c52a62fab050f2d50776022d85433f80603acc6c
|
File details
Details for the file viewscope-1.1.0-py3-none-any.whl.
File metadata
- Download URL: viewscope-1.1.0-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
50da97d09db587bef904232bd6d5ee7a8f6c64cb24c78e040076a7ed3d4cef52
|
|
| MD5 |
7bdb437deaa995f7dc0ac73cb5dd3336
|
|
| BLAKE2b-256 |
37a7deed8464373780de3f457c235d0b79b7b363d3c9f20c17f1bee87f390664
|