我正在尝试做什么:
我正在尝试获取我的故事书项目中每个元素示例的屏幕截图。我试图这样做的方法是点击元素然后截图,点击下一个,截图等。
以下是附加代码:
test('no visual regression for button', async () => {
const selector = 'a[href*="?selectedKind=Buttons&selectedStory="]';
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('http://localhost:8080');
let examples = await page.$$(selector);
await examples.map( async(example) => {
await example.click();
const screen = await page.screenshot();
expect(screen).toMatchImageSnapshot();
});
await browser.close();
});
但是当我运行此代码时,我收到以下错误:
Protocol error (Runtime.callFunctionOn): Target closed.
at Session._onClosed (../../node_modules/puppeteer/lib/Connection.js:209:23)
at Connection._onClose (../../node_modules/puppeteer/lib/Connection.js:116:15)
at Connection.dispose (../../node_modules/puppeteer/lib/Connection.js:121:10)
at Browser.close (../../node_modules/puppeteer/lib/Browser.js:60:22)
at Object.<anonymous>.test (__tests__/visual.spec.js:21:17)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:169:7)
我相信这是因为元素失去了它的上下文或类似的东西,我不知道用什么方法来解决这个问题。您能提供更深入的解释或可能的解决方案吗?我发现API文档根本没用。
答案 0 :(得分:0)
一旦页面导航作为垃圾收集发生,就会调用ElementHandle.dispose(),如docs中所述。因此,当您致电element.click()
时,它会导航并且其余元素不再指向任何内容。