android_uiautomator_clear_text
Clear text from Android UI elements by resource ID using ADB commands. Remove input field content for testing automation or device control.
Instructions
Clear text from a UI element by resource ID
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| resourceId | Yes | Resource ID of the element to clear | |
| deviceSerial | No | Specific device serial number to target (optional) |
Implementation Reference
- src/handlers.ts:412-436 (handler)The main handler function for the 'android_uiautomator_clear_text' tool. It validates the input arguments and delegates the clearing action to the ADB wrapper's clearTextByResourceId method.export async function uiautomatorClearTextHandler( adb: ADBWrapper, args: any ): Promise<{ content: Array<{ type: string; text: string }> }> { const { resourceId, deviceSerial } = args as UIAutomatorClearTextArgs; if (!resourceId || typeof resourceId !== 'string') { throw new Error('Invalid resource ID: resourceId must be a non-empty string'); } try { await adb.clearTextByResourceId(resourceId, deviceSerial); return { content: [ { type: 'text', text: `Successfully cleared text on element with resource-id: ${resourceId}`, }, ], }; } catch (error) { throw new Error(`UIAutomator clear text failed: ${error instanceof Error ? error.message : String(error)}`); } }
- src/adb-wrapper.ts:607-633 (helper)Core helper method in ADBWrapper that implements the text clearing logic: dumps UI hierarchy, parses element bounds, taps to focus, selects all (Ctrl+A), and deletes.async clearTextByResourceId(resourceId: string, deviceSerial?: string): Promise<void> { const device = await this.getTargetDevice(deviceSerial); const hierarchyFile = '/sdcard/window_dump.xml'; await this.exec(['shell', 'uiautomator', 'dump', hierarchyFile], device); const { stdout } = await this.exec(['shell', 'cat', hierarchyFile], device); await this.exec(['shell', 'rm', hierarchyFile], device); const boundsRegex = new RegExp(`resource-id="${resourceId}"[^>]*bounds="\\[(\\d+),(\\d+)\\]\\[(\\d+),(\\d+)\\]"`); const match = stdout.match(boundsRegex); if (match) { const x1 = parseInt(match[1], 10); const y1 = parseInt(match[2], 10); const x2 = parseInt(match[3], 10); const y2 = parseInt(match[4], 10); const centerX = Math.floor((x1 + x2) / 2); const centerY = Math.floor((y1 + y2) / 2); await this.touch(centerX, centerY, 100, device); await this.sendKeyEvent('KEYEVENT_CTRL_A', device); await this.sendKeyEvent('KEYEVENT_DEL', device); } else { throw new Error(`Element with resource-id ${resourceId} not found in UI hierarchy`); } }
- src/index.ts:252-269 (schema)Input schema definition for the tool, defining the expected parameters (resourceId required, deviceSerial optional).{ name: 'android_uiautomator_clear_text', description: 'Clear text from a UI element by resource ID', inputSchema: { type: 'object', properties: { resourceId: { type: 'string', description: 'Resource ID of the element to clear', }, deviceSerial: { type: 'string', description: 'Specific device serial number to target (optional)', }, }, required: ['resourceId'], }, },
- src/index.ts:484-485 (registration)Tool registration in the switch statement that dispatches calls to the appropriate handler function.case 'android_uiautomator_clear_text': return await uiautomatorClearTextHandler(this.adb, args);
- src/handlers.ts:61-64 (schema)TypeScript interface defining the arguments for the handler, matching the tool schema.interface UIAutomatorClearTextArgs { resourceId: string; deviceSerial?: string; }