我开始使用pupeteer和node,并在win 10中使用vscode。我正在尝试登录一个网站并抓取表格。到目前为止,我有:
(async () => {
const browser = await puppeteer.launch({
headless: false,
});
var page = await browser.newPage();
await page.goto('thesite.com/login/');
await page.click(USERNAME_SELECTOR);
await page.keyboard.type(CREDS.username);
await page.click(PASSWORD_SELECTOR);
await page.keyboard.type(CREDS.password);
await page.click(BUTTON_SELECTOR);
await page.waitForNavigation();
const TABLE_ROW_SELECTOR = '.gv-container.gv-container-133 > table > tbody';
await page.waitForSelector(TABLE_ROW_SELECTOR);
await page.waitForSelector(TABLE_ROW_SELECTOR);
await page.screenshot({ path: 'example.png' });
const data = await page.evaluate(SELECTOR => document.querySelectorAll(SELECTOR), TABLE_ROW_SELECTOR);
await browser.close();
})();
这主要是有效的。 但是在我的控制台中,我看到了一个对象列表,但据我所知,没有任何值。这是最糟糕的对象:
0:Object {}
__proto__:Object {constructor: , __defineGetter__: , __defineSetter__: , …}
__defineGetter__:function __defineGetter__() { … }
__defineSetter__:function __defineSetter__() { … }
__lookupGetter__:function __lookupGetter__() { … }
__lookupSetter__:function __lookupSetter__() { … }
constructor:function Object() { … }
hasOwnProperty:function hasOwnProperty() { … }
No debug adapter, can not send 'variables'
isPrototypeOf:function isPrototypeOf() { … }
No debug adapter, can not send 'variables'
"没有调试适配器,不能发送'变量'"是什么意思?
编辑:
我更新到最新的 vscode 并检查所有扩展是否已更新。现在当我运行启动程序时
E:nodejsnode.exe --inspect-brk=27108 index.js
Debugger listening on ws://127.0.0.1:27108/e5928c71-370c- 4111-9ec3-77bb2cd85075
For help, see: https://nodejs.org/en/docs/inspector
(node:12844) ExperimentalWarning: The fs.promises API is experimental
warning.js:18
Array(25) [ElementHandle, ElementHandle, ElementHandle, ElementHandle, ElementHandle, ElementHandle, ElementHandle, ElementHandle, …]
index.js:64
length:25
__proto__:Array(0) [, …]
concat:function concat() { … }
[[Scopes]]:Scopes[0]
arguments:TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them
知道这意味着什么吗?
尝试使用integratedConsole
而不是integratedTerminal
或externalTerminal
作为launch.json
中节点配置的一部分时,我遇到了这个问题:
将其设置回:
"console": "integratedTerminal"
修复了它。只用了一个小时就弄清楚了。有关详细信息,请参阅文档。
您也可以尝试:
"输出捕获": "标准">
在你的启动.json
这是关于Github的参考
发生这种情况的原因是调试器在代码执行结束后停止。然后,没有更多的调试适配器可用于发送变量。我所做的是在代码执行的底部添加一行额外的行,并在其上设置断点。它不漂亮,但它有效。
我遇到了同样的问题,但那是我导致了这个错误......
我在某个代码范围内定义了一个条件断点,我尝试在另一个条件断点中使用它,但在不同的范围内。
在新作用域中找不到在此条件下使用的变量。 这就是为什么调试器无法启动并给我们此错误的原因。
当我弄清楚时,我使用了作用域上定义的变量来使条件正常工作。
没什么大不了的,但我希望这可以帮助某人
当JavaScript 脚本在正常执行之前的初始评估步骤中由于await
-using 函数上缺少async
关键字而出错时,我遇到了类似的问题,并且 vscode 调试器在执行上下文退出之前没有在有意义的错误报告上下文中捕获错误。