Skip to main content
Glama
yfmeii

WeChat Mini Program Dev MCP

by yfmeii

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
NameRequiredDescriptionDefault
connectionNo
selectorYes
innerSelectorNo
outerNo

Implementation Reference

  • 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),
                })
              );
            }
          );
        },
      };
    }
  • 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));
  • 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),
      ];
    }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yfmeii/weapp-dev-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server