Skip to main content
Glama
yfmeii

WeChat Mini Program Dev MCP

by yfmeii

element_getSize

Retrieve width and height measurements for elements in WeChat mini programs, including components using innerSelector for precise targeting.

Instructions

获取元素大小(宽度和高度)。如需获取自定义组件内部元素的大小,请使用 innerSelector 参数:selector 设为组件 ID 选择器(如 #my-component),innerSelector 设为组件内部元素的选择器。

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
connectionNo
selectorYes
innerSelectorNo

Implementation Reference

  • The execute handler for the element_getSize tool. It resolves the element using the provided selector(s), calls element.size() to get dimensions, and formats the result as JSON text.
    execute: async (rawArgs, context: ToolContext) => {
      const args = getElementSizeParameters.parse(rawArgs ?? {});
      return manager.withPage(
        context.log,
        { overrides: args.connection },
        async (page) => {
          const element = await resolveElement(
            page,
            args.selector,
            args.innerSelector
          );
    
          if (typeof element.size !== "function") {
            throw new UserError(
              `元素 "${args.selector}" 不支持获取大小。`
            );
          }
    
          const size = await element.size();
          return toTextResult(
            formatJson({
              selector: args.selector,
              innerSelector: args.innerSelector ?? null,
              width: toSerializableValue(size.width),
              height: toSerializableValue(size.height),
            })
          );
        }
      );
    },
  • Zod schema for input validation of the element_getSize tool parameters: selector and optional innerSelector, extending connection schema.
    const getElementSizeParameters = connectionContainerSchema.extend({
      selector: z.string().trim().min(1),
      innerSelector: z.string().trim().min(1).optional(),
    });
  • Factory function that defines and returns the complete tool object for 'element_getSize', including name, description, schema, and handler.
    function createGetElementSizeTool(manager: WeappAutomatorManager): AnyTool {
      return {
        name: "element_getSize",
        description: "获取元素大小(宽度和高度)。如需获取自定义组件内部元素的大小,请使用 innerSelector 参数:selector 设为组件 ID 选择器(如 #my-component),innerSelector 设为组件内部元素的选择器。",
        parameters: getElementSizeParameters,
        execute: async (rawArgs, context: ToolContext) => {
          const args = getElementSizeParameters.parse(rawArgs ?? {});
          return manager.withPage(
            context.log,
            { overrides: args.connection },
            async (page) => {
              const element = await resolveElement(
                page,
                args.selector,
                args.innerSelector
              );
    
              if (typeof element.size !== "function") {
                throw new UserError(
                  `元素 "${args.selector}" 不支持获取大小。`
                );
              }
    
              const size = await element.size();
              return toTextResult(
                formatJson({
                  selector: args.selector,
                  innerSelector: args.innerSelector ?? null,
                  width: toSerializableValue(size.width),
                  height: toSerializableValue(size.height),
                })
              );
            }
          );
        },
      };
    }
  • Registers element_getSize tool within the createElementTools function by including its factory in the tools array.
    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)
    Aggregates and registers all tools, including element tools (containing element_getSize), in the top-level createTools function.
    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_getSize, to the FastMCP server.
    server.addTools(createTools(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