繁体   English   中英

木偶功能不能运行怎么办?

[英]Puppeteer function doesnt run whats wrong?

    const puppeteer = require('puppeteer');

    const init = async () => {
      const browser = await puppeteer.launch({ headless: false });
      const page = await browser.newPage();
      // login
      let login = async () => {
        console.log('login init');
        await page.goto(HOME_PAGE);
        await page.type($clientID, CLIENT_ID);
        await page.type($userName, USER_NAME);
        await page.type($password, PASSWORD);
        await page.click($submitBtn);
        await page.waitFor(WAIT_SEC);
        await page.goto(SCHEDULE_PAGE);
        console.log('login end');
      }

      // look for schedule
      let setStartDate = async () => {
        console.log('start init');
        await page.waitFor(3000);
        await page.click('#selfsched_startDate_dtInput', { clickCount: 3 });
        await page.keyboard.press('Backspace');
        await page.type($startDate, START_DATE);
        console.log('start end');
      }

      let setEndDate = async () => {
        console.log('end init');
        await page.click($endDate, { clickCount: 3 });
        await page.keyboard.press('Backspace');
        await page.type($endDate, END_DATE);
        await page.keyboard.press('Enter');
        console.log('end end');
      }

      let confirmSchedule = async () => {
        console.log('confirm init');
        await page.waitFor(WAIT_SEC);
        await page.click($confirmBtn);
        console.log('confirm end');
      }

      let steps = [
        login(),
        setStartDate(),
        setEndDate(),
        confirmSchedule()
      ];

      await Promise.all(steps);

      console.log('im finishing');
      browser.close();
    }

    init()
      .then(values => {
        console.log('success');
      })
      .catch(err => {

      });

每当我的代码进入setStartDate函数时,都不会发生任何事情。
我已经添加了console.log消息,但是它们并没有按照我认为的顺序排列。 我以为Promise.all()可以按顺序等待所有内容.....我对async / promise / await的了解也不是最棒的:)感谢您的帮助

控制台日志的顺序im获取login init start init end init confirm init login end

我以为Promise.all()等待一切

这基本上与Promise.all所做的相反:

给定的Promises数组的执行没有隐含的顺序。 在某些计算机上,它们可以并行执行,或者在某种意义上可以同时执行,而在其他计算机上,它们可以串行执行。 因此, 任何Promise中都不得依赖于 Promises 的执行顺序

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

您应该按顺序await功能:

await login()
await setStartDate()
await setEndDate()
await confirmSchedule()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM