如何在 Puppeteer 中找到 document.activeElement

How to find document.activeElement in Puppeteer

我想用 puppeteer 自动填写表格。 我填写第一个输入,然后单击一个按钮,然后创建一个具有焦点的新输入字段。

我如何 select 这个输入?我可以使用 document.activeElement 吗?

  let newActivity = 'button.new_activity'
  await page.waitForSelector(newActivity)
  await page.click(newActivity)

// find active/focused input
await page.type(focusedInput, 'message')

您可以使用 evaluateHandle 获取元素句柄,然后对该元素调用 type 函数。

const el = await page.evaluateHandle(() => document.activeElement);
await el.type('message');
function findFocusedNode(node) {
    if (node.focused) {
        return node;
    }

    for (const child of node.children || []) {
        const focusedNode = findFocusedNode(child);
        if (focusedNode) {
            return focusedNode;
        }
    }
}

const snapshot = await page.accessibility.snapshot();
const focusedNode = findFocusedNode(snapshot);
console.log('focusedNode', focusedNode);

https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-accessibility