Javascript 木偶演员点击下拉菜单的问题

Javascript 木偶演员点击下拉菜单的问题,javascript,json,npm,puppeteer,Javascript,Json,Npm,Puppeteer,我正在用木偶制作一个机器人,可以检查我的大学作业。我希望木偶师按照我做的步骤检查我是否有作业,其中一部分涉及到一个下拉菜单,我需要木偶师点击它才能继续——但是,它没有点击它,而是在终端中给我一个错误 这是我编写的代码(这不是完整的代码,但这是第一个发生错误的点,因此解决它将防止问题): 这是我通过node app.js运行此代码时在终端中遇到的错误: (node:16992) UnhandledPromiseRejectionWarning: Error: Execution context w

我正在用木偶制作一个机器人,可以检查我的大学作业。我希望木偶师按照我做的步骤检查我是否有作业,其中一部分涉及到一个下拉菜单,我需要木偶师点击它才能继续——但是,它没有点击它,而是在终端中给我一个错误

这是我编写的代码(这不是完整的代码,但这是第一个发生错误的点,因此解决它将防止问题):

这是我通过
node app.js运行此代码时在终端中遇到的错误:

(node:16992) UnhandledPromiseRejectionWarning: Error: Execution context was destroyed, most likely because of a navigation.
    at rewriteError (C:\Users\milad\Desktop\New folder\node_modules\puppeteer\lib\cjs\puppeteer\common\ExecutionContext.js:261:23)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async ExecutionContext._evaluateInternal (C:\Users\milad\Desktop\New folder\node_modules\puppeteer\lib\cjs\puppeteer\common\ExecutionContext.js:161:64)
    at async C:\Users\milad\Desktop\New folder\node_modules\puppeteer\lib\cjs\puppeteer\common\DOMWorld.js:102:30
    at async DOMWorld.$$ (C:\Users\milad\Desktop\New folder\node_modules\puppeteer\lib\cjs\puppeteer\common\DOMWorld.js:122:26)
    at async checkHomeWork (C:\Users\milad\Desktop\New folder\app.js:12:6)
(node:16992) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:16992) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

是什么导致了这种情况?

您试图在加载元素之前单击。 改为:

const puppeteer = require('puppeteer');

puppeteer.launch({ headless: false, defaultViewport: null }).then(async browser => {
  const page = await browser.newPage();
  const url = "https://www.jce.ac.il/";
  await page.goto(url);
  page
    .waitForSelector('#infostation-dd-trigger')
    .then(() => {
        // Rest of the logic here.
     });
    browser.close();
});

尝试在加载元素之前单击。 改为:

const puppeteer = require('puppeteer');

puppeteer.launch({ headless: false, defaultViewport: null }).then(async browser => {
  const page = await browser.newPage();
  const url = "https://www.jce.ac.il/";
  await page.goto(url);
  page
    .waitForSelector('#infostation-dd-trigger')
    .then(() => {
        // Rest of the logic here.
     });
    browser.close();
});

不幸的是,这不起作用现在我得到一个类型错误,说page.$不是一个函数。then()不允许我在它里面做任何事情,我无法进行单击调用,也无法解释函数,也无法用page描述选择器。$您是否有其他方法解决此问题?现在,我收到一个类型错误,显示page。$不是函数。then()不允许我在其中执行任何操作,我不能进行点击调用,我不能解释函数,我不能用页面描述选择器。$你有其他方法解决这个问题吗