Skip to main content
Glama

element_getInnerElements

Retrieve multiple elements within a specified component in WeChat Mini Programs using CSS selectors for automated testing and development workflows.

Instructions

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

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
connectionNo
selectorYes
innerSelectorNo
targetSelectorYes

Implementation Reference

  • The main handler for 'element_getInnerElements' tool. It parses arguments, resolves the parent element, checks if $$ method is available, queries inner elements with targetSelector, extracts tagName and text for each, and returns formatted JSON with parent info, count, and elements details.
    function createGetInnerElementsTool(manager: WeappAutomatorManager): AnyTool { return { name: "element_getInnerElements", description: "在元素范围内获取元素数组,相当于 element.$$(selector)。重要:操作自定义组件内部元素时,必须先通过 ID 选择器(如 #my-component)定位自定义组件,然后使用此工具获取组件内部的元素数组。", parameters: getInnerElementsParameters, execute: async (rawArgs, context: ToolContext) => { const args = getInnerElementsParameters.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 innerElements = await element.$$(args.targetSelector); if (!Array.isArray(innerElements)) { throw new UserError( `在元素 "${args.selector}" 内查询选择器 "${args.targetSelector}" 失败。` ); } const elementsInfo = await Promise.all( innerElements.map(async (el, index) => { const tagName = el.tagName || null; const text = typeof el.text === "function" ? await el.text().catch(() => null) : null; return { index, tagName: toSerializableValue(tagName), text: toSerializableValue(text), }; }) ); return toTextResult( formatJson({ parentSelector: args.selector, parentInnerSelector: args.innerSelector ?? null, targetSelector: args.targetSelector, count: innerElements.length, elements: elementsInfo, }) ); } ); }, }; }
  • Zod schema defining the input parameters for the tool: selector (required), innerSelector (optional), targetSelector (required), extending shared connectionContainerSchema.
    const getInnerElementsParameters = connectionContainerSchema.extend({ selector: z.string().trim().min(1), innerSelector: z.string().trim().min(1).optional(), targetSelector: z.string().trim().min(1), });
  • Registration of the 'element_getInnerElements' tool via createGetInnerElementsTool(manager) within the exported createElementTools function that returns all element-related 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