element_tap
Simulate clicking WXML elements using CSS selectors to interact with WeChat mini program components. Use innerSelector parameter to click elements inside custom components for automated testing and development.
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:91-112 (handler)The execute function implementing the core logic: parses input, resolves element via selector, performs tap(), waits if needed, returns success message.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)Input schema using Zod: extends connectionContainerSchema with selector (string), optional innerSelector (string), optional waitMs (non-negative int).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:87-113 (registration)Tool object registration in createTapElementTool: sets name 'element_tap', description, parameters schema, and execute handler. This object is returned and included in createElementTools array.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` : ""}。` ); } ); }, };