Selenium Webdriver for loop открывает множество браузеров, не дожидается завершения функции - PullRequest
0 голосов
/ 04 мая 2018

Когда я запускаю следующий код, 150 браузеров мгновенно открываются для google.com. Как я могу заставить цикл ждать завершения функции, прежде чем снова открыть Google?

const {
    Builder, By, Key, until
} = require('selenium-webdriver');
require('chromedriver');

for (let index = 0; index < 150; index++) {
    (async function example() {
        let driver = await new Builder().forBrowser('chrome').build();
        try {
            await driver.get('https://www.google.com/');
        } catch(err) {
            console.log(err);
        } finally {
            await driver.quit();
        }
    })();
}

Я пытался использовать код из следующих постов, но безуспешно: JavaScript, Node.js: является ли Array.forEach асинхронным? , Использование async / await с циклом forEach , сделать асинхронный вызов внутри forEach .

Заранее спасибо за любую помощь или информацию.

1 Ответ

0 голосов
/ 04 мая 2018

Простое объявление и выполнение функции async не заставляет поток автоматически ждать выполнения функции - вам также нужно await, в противном случае она интерпретируется просто как объявленное обещание.

(async () => {
  for (let index = 0; index < 150; index++) {
    await (async function example() {
      let driver = await new Builder().forBrowser('chrome').build();
      try {
        await driver.get('https://www.google.com/');
      } catch(err) {
        console.log(err);
      } finally {
        await driver.quit();
      }
    })();
  }
})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...