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
| Name | Required | Description | Default |
|---|---|---|---|
| connection | No | ||
| selector | Yes | ||
| innerSelector | No |
Implementation Reference
- src/tools/element.ts:355-384 (handler)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), }) ); } ); },
- src/tools/element.ts:59-62 (schema)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(), });
- src/tools/element.ts:350-386 (registration)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), }) ); } ); }, }; }
- src/tools/element.ts:70-84 (registration)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));