1

我创建了一个名为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!

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

4

1 回答 1

1

随着element您创建了一个ElementHandle,可以使用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 })
于 2020-07-22T16:45:20.693 回答