Skip to main content
Glama
yfmeii

WeChat Mini Program Dev MCP

by yfmeii

element_getInnerElement

Retrieve elements within custom components in WeChat Mini Programs by first locating the component with an ID selector, then accessing its internal elements for automation tasks.

Instructions

在元素范围内获取元素,相当于 element.$(selector)。重要:操作自定义组件内部元素时,必须先通过 ID 选择器(如 #my-component)定位自定义组件,然后使用此工具获取组件内部的元素。

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
connectionNo
selectorYes
innerSelectorNo
targetSelectorYes

Implementation Reference

  • The execute handler function for the 'element_getInnerElement' tool. It resolves the parent element, queries the inner element using element.$(targetSelector), extracts tagName, text, and outerWxml, and returns them in JSON format.
    execute: async (rawArgs, context: ToolContext) => {
      const args = getInnerElementParameters.parse(rawArgs ?? {});
      return manager.withPage(
        context.log,
        { overrides: args.connection },
        async (page) => {
          const element = await resolveElement(
            page,
            args.selector,
            args.innerSelector
          );
    
          if (typeof element.$ !== "function") {
            throw new UserError(
              `元素 "${args.selector}" 不支持查询内部元素。`
            );
          }
    
          const innerElement = await element.$(args.targetSelector);
          if (!innerElement) {
            throw new UserError(
              `在元素 "${args.selector}" 内未找到选择器 "${args.targetSelector}" 对应的元素。`
            );
          }
    
          const tagName = innerElement.tagName || null;
          const text = typeof innerElement.text === "function"
            ? await innerElement.text().catch(() => null)
            : null;
          const outerWxml = typeof innerElement.outerWxml === "function"
            ? await innerElement.outerWxml().catch(() => null)
            : null;
    
          return toTextResult(
            formatJson({
              parentSelector: args.selector,
              parentInnerSelector: args.innerSelector ?? null,
              targetSelector: args.targetSelector,
              tagName: toSerializableValue(tagName),
              text: toSerializableValue(text),
              outerWxml: toSerializableValue(outerWxml),
            })
          );
        }
      );
    },
  • Zod schema defining the input parameters for the tool: selector (required), innerSelector (optional), targetSelector (required).
    const getInnerElementParameters = connectionContainerSchema.extend({
      selector: z.string().trim().min(1),
      innerSelector: z.string().trim().min(1).optional(),
      targetSelector: z.string().trim().min(1),
    });
  • src/tools.ts:7-13 (registration)
    Top-level registration in createTools where createElementTools (containing element_getInnerElement) is included in the full tools array.
    export function createTools(manager: WeappAutomatorManager): AnyTool[] {
      return [
        ...createApplicationTools(manager),
        ...createPageTools(manager),
        ...createElementTools(manager),
      ];
    }
  • Registration of the tool creator function createGetInnerElementTool within the element tools group.
    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