用于循环的Selenium Webdriver打开许多浏览器,不等待功能完成

时间:2018-05-04 04:48:33

标签: javascript node.js selenium selenium-webdriver selenium-chromedriver

当我运行以下代码时,会立即向google.com开放150个浏览器。如何让循环等到函数完成再重新打开谷歌之前?

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: is Array.forEach asynchronous?Using async/await with a forEach loopmake async call inside forEach

提前感谢您提供任何帮助或信息。

1 个答案:

答案 0 :(得分:0)

只是声明并执行async函数不会自动使线程等到函数执行 - 你必须await它,否则它只被解释为声明的promise。

(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();
      }
    })();
  }
})();