使用 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 })
我创建了一个名为 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 })