我在Puppeteer中有以下ES6代码:
gcc -lstdc++ -lLibraryName ...
调用此代码时,出现错误async function waitForSelectorReversed(page, selector) {
await page.waitFor(() => !document.querySelector(selector));
}
。我知道此错误是由以下事实造成的:闭包内部的代码无法从外部范围访问变量。使它正常工作的方法是什么?
答案 0 :(得分:2)
您需要将外部作用域变量显式传递到page.waitFor
中才能正常工作。正如documentation所述:
要将参数从node.js传递到
page.waitFor
函数的谓词:const selector = '.foo'; await page.waitFor(selector => !document.querySelector(selector), {}, selector);
对于您的代码,您需要做的就是删除第一行,因为selector
已经定义。
这并不是普通的Java脚本或ES6的东西,它是Puppeteer(和类似Puppeteer的工具)在与页面交互时如何工作的怪癖。