Skip to main content
Glama

element_getInnerElement

Retrieve specific elements within a WeChat Mini Program component using CSS selectors. This tool helps developers locate and interact with nested elements inside custom components for testing and automation purposes.

Instructions

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

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
connectionNo
selectorYes
innerSelectorNo
targetSelectorYes

Implementation Reference

  • Full tool handler for 'element_getInnerElement': resolves parent element using resolveElement, queries inner element with element.$(targetSelector), extracts tagName, text, and outerWxml, returns formatted JSON.
    function createGetInnerElementTool(manager: WeappAutomatorManager): AnyTool { return { name: "element_getInnerElement", description: "在元素范围内获取元素,相当于 element.$(selector)。重要:操作自定义组件内部元素时,必须先通过 ID 选择器(如 #my-component)定位自定义组件,然后使用此工具获取组件内部的元素。", parameters: getInnerElementParameters, 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), }) ); } ); }, }; }
  • Input schema (Zod) for element_getInnerElement: 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), });
  • Local registration of element_getInnerElement tool within createElementTools, which returns an array of element tools including this one.
    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)
    Higher-level registration including element tools (thus element_getInnerElement) via spread of createElementTools(manager).
    export function createTools(manager: WeappAutomatorManager): AnyTool[] { return [ ...createApplicationTools(manager), ...createPageTools(manager), ...createElementTools(manager), ]; }
  • src/index.ts:17-17 (registration)
    Top-level MCP server registration: adds all tools from createTools, which includes element_getInnerElement.
    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