Javascript 使用Puppeter获取自定义元素,然后执行单击操作
我已经创建了一个名为data testId的自定义属性,我正在尝试使用puppeter进行访问,然后执行单击操作,但由于某些原因,我无法获取此元素,并且面临错误。 我尝试了以下两种选择:Javascript 使用Puppeter获取自定义元素,然后执行单击操作,javascript,puppeteer,jest-puppeteer,Javascript,Puppeteer,Jest Puppeteer,我已经创建了一个名为data testId的自定义属性,我正在尝试使用puppeter进行访问,然后执行单击操作,但由于某些原因,我无法获取此元素,并且面临错误。 我尝试了以下两种选择: const element = await page.$('[data-testId="testid-button-refresh"]'); await page.click(element, { clickCount: 1 }); 这是: const refreshButton = aw
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 });
在这两个问题上,我都遇到了以下错误:
我做错了什么?这个错误是什么意思?使用
元素
您已经创建了一个可以用而不是用页面单击的页面。单击
这应该起作用:
const element=wait page.$(“[data testId=“testId button refresh”]”)/这是一个ElementHandle
等待元素。单击({clickCount:1})
或者您仍然可以使用,但要使单击保持在相同的上下文中,应使用选择器,而不是ElementHandle作为第一个参数:
等待页面。单击('[data testId=“testId button refresh”]',{clickCount:1})
你说得对,这是我的问题。我一直在用页面点击,而不是用元素——可能错过了。
JSHandles can be evaluated only in the context they were created!