element_getWxml
Retrieve WXML code for elements in WeChat Mini Programs, including inner or outer markup and custom component elements, to inspect and debug page structures.
Instructions
获取元素 WXML。默认获取内部 WXML(element.wxml()),设置 outer 为 true 可获取包含元素本身的 WXML(element.outerWxml())。如需获取自定义组件内部元素的 WXML,请使用 innerSelector 参数:selector 设为组件 ID 选择器(如 #my-component),innerSelector 设为组件内部元素的选择器。
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| connection | No | ||
| selector | Yes | ||
| innerSelector | No | ||
| outer | No |
Implementation Reference
- src/tools/element.ts:388-425 (handler)The handler function createGetElementWxmlTool that defines and returns the tool object with name 'element_getWxml', its description, parameters schema, and the execute function implementing the logic to get WXML or outerWxml of the element.function createGetElementWxmlTool(manager: WeappAutomatorManager): AnyTool { return { name: "element_getWxml", description: "获取元素 WXML。默认获取内部 WXML(element.wxml()),设置 outer 为 true 可获取包含元素本身的 WXML(element.outerWxml())。如需获取自定义组件内部元素的 WXML,请使用 innerSelector 参数:selector 设为组件 ID 选择器(如 #my-component),innerSelector 设为组件内部元素的选择器。", parameters: getElementWxmlParameters, execute: async (rawArgs, context: ToolContext) => { const args = getElementWxmlParameters.parse(rawArgs ?? {}); return manager.withPage( context.log, { overrides: args.connection }, async (page) => { const element = await resolveElement( page, args.selector, args.innerSelector ); const methodName = args.outer ? "outerWxml" : "wxml"; if (typeof element[methodName] !== "function") { throw new UserError( `元素 "${args.selector}" 不支持获取 ${methodName}。` ); } const wxml = await element[methodName](); return toTextResult( formatJson({ selector: args.selector, innerSelector: args.innerSelector ?? null, type: args.outer ? "outerWxml" : "wxml", wxml: toSerializableValue(wxml), }) ); } ); }, }; }
- src/tools/element.ts:64-68 (schema)Zod schema defining the input parameters for the element_getWxml tool: selector, optional innerSelector, and optional outer flag.const getElementWxmlParameters = connectionContainerSchema.extend({ selector: z.string().trim().min(1), innerSelector: z.string().trim().min(1).optional(), outer: z.boolean().optional().default(false), });
- src/tools.ts:7-13 (registration)Registration of element tools (including element_getWxml) via spreading createElementTools into the main tools array in createTools.export function createTools(manager: WeappAutomatorManager): AnyTool[] { return [ ...createApplicationTools(manager), ...createPageTools(manager), ...createElementTools(manager), ]; }
- src/index.ts:17-17 (registration)Final MCP server registration of all tools, including element_getWxml, by calling server.addTools(createTools(manager)).server.addTools(createTools(manager));
- src/tools/element.ts:70-84 (registration)Local registration of the element_getWxml tool within the createElementTools function that returns the array of element tools.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), ]; }