使用 puppeteer 获取自定义元素,然后执行单击操作

Getting custom element using puppeteer and then do click action

我创建了一个名为 data-testId 的自定义属性,我正在尝试使用 puppeteer 然后执行点击操作,但出于某种原因,我无法获取此元素并面临错误。 我试过这两个选项:

const element = await page.$('[data-testId="testid-button-refresh"]');
await page.click(element, { clickCount: 1 });

还有这个:

const refreshButton = await page.evaluateHandle(() => {
return document.querySelector('[data-testId=testid-button-refresh]').value;
});
await page.click(element, { clickCount: 1 });

在他们身上我都收到了这个错误:

JSHandles can be evaluated only in the context they were created!

我做错了什么?这个错误是什么意思?

您使用 element 创建了一个 ElementHandle which can be clicked with elementHandle.click 而不是 page.click.

这应该有效:

const element = await page.$('[data-testId="testid-button-refresh"]') // this is an ElementHandle
await element.click({ clickCount: 1 })

或者您仍然可以使用 page.click,但要在相同的上下文中保持点击,您应该使用选择器,而不是 ElementHandle 作为第一个参数:

await page.click('[data-testId="testid-button-refresh"]', { clickCount: 1 })