4 votes

Comment trouver document.activeElement dans Puppeteer ?

Je veux remplir automatiquement un formulaire avec Puppeteer. Je remplis la première entrée, puis je clique sur un bouton qui crée alors un nouveau champ d'entrée qui a le focus.

Comment puis-je sélectionner cette entrée ? Puis-je utiliser document.activeElement et comment ?

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

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

12voto

hardkoded Points 6520

Vous pouvez utiliser evaluateHandle pour obtenir la poignée de l'élément, puis appeler la fonction type sur cet élément.

const el = await page.evaluateHandle(() => document.activeElement);
await el.type('message');

3voto

aH6y Points 167
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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X