element_tap
Simulate clicking WXML elements in WeChat mini programs using CSS selectors. Click custom component elements by specifying innerSelector for precise targeting.
Instructions
通过 CSS 选择器模拟点击 WXML 元素。如需点击自定义组件内部的元素,请使用 innerSelector 参数:selector 设为组件 ID 选择器(如 #my-component),innerSelector 设为组件内部元素的选择器。
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| connection | No | ||
| selector | Yes | ||
| innerSelector | No | ||
| waitMs | No |
Implementation Reference
- src/tools/element.ts:86-114 (handler)Full tool definition including the execute handler for the 'element_tap' tool. It parses arguments, resolves the target element using selector and optional innerSelector, performs a tap action, optionally waits, and returns a confirmation message.function createTapElementTool(manager: WeappAutomatorManager): AnyTool { return { name: "element_tap", description: "通过 CSS 选择器模拟点击 WXML 元素。如需点击自定义组件内部的元素,请使用 innerSelector 参数:selector 设为组件 ID 选择器(如 #my-component),innerSelector 设为组件内部元素的选择器。", parameters: tapElementParameters, execute: async (rawArgs, context: ToolContext) => { const args = tapElementParameters.parse(rawArgs ?? {}); const waitMs = args.waitMs; return manager.withPage( context.log, { overrides: args.connection }, async (page) => { const element = await resolveElement( page, args.selector, args.innerSelector ); await element.tap(); await waitOnPage(page, waitMs); return toTextResult( `已点击元素 "${args.selector}"${args.innerSelector ? ` -> "${args.innerSelector}"` : ""}${waitMs ? ` 并等待 ${waitMs}ms` : ""}。` ); } ); }, }; }
- src/tools/element.ts:16-20 (schema)Zod schema defining the input parameters for the 'element_tap' tool: selector (required), innerSelector (optional), and waitMs (optional).const tapElementParameters = connectionContainerSchema.extend({ selector: z.string().trim().min(1), innerSelector: z.string().trim().min(1).optional(), waitMs: z.coerce.number().int().nonnegative().optional(), });
- src/tools/element.ts:70-84 (registration)The 'element_tap' tool is registered as the first tool in the array returned by createElementTools.export function createElementTools( manager: WeappAutomatorManager ): AnyTool[] { return [ createTapElementTool(manager), createInputTextTool(manager), createCallElementMethodTool(manager), createGetElementDataTool(manager), createSetElementDataTool(manager), createGetInnerElementTool(manager), createGetInnerElementsTool(manager), createGetElementSizeTool(manager), createGetElementWxmlTool(manager), ]; }
- src/tools.ts:7-13 (registration)createTools incorporates the element tools (including element_tap) into the full tools array.export function createTools(manager: WeappAutomatorManager): AnyTool[] { return [ ...createApplicationTools(manager), ...createPageTools(manager), ...createElementTools(manager), ]; }
- src/index.ts:17-17 (registration)Final registration of all tools, including element_tap, to the FastMCP server.server.addTools(createTools(manager));