如何避免打开多个chrome窗口以使用Selenium WebDriverJS运行多个URL


如何

修复此代码,以便在尝试解析多个 url 时不运行浏览器的多个实例?理想情况下,我只想要一个浏览器打开并在其中运行多个 url。任何帮助不胜感激!

我尝试在 foreach 循环之外实例化驱动程序,但它只打印最后一个 url 的结果。

async function executeTask (driver, url) {
    try{
        await driver.get(url);
        let result = await AxeBuilder(driver).analyze();
        return Promise.resolve(result);
    } 
    catch(err) {
        return Promise.reject(err);
    }
}
function iterateThroughUrls(urls) {
    urls.forEach(url => {
        var driver = new WebDriver.Builder().forBrowser('firefox').build();
        executeTask(driver, url).then(result => {
            console.log(result);
        }).catch(err => {
            //handle errors
        });
    });
}

使用 async/await,您可以在 for 循环中一个接一个地运行承诺。

async function executeTask (driver, url) {
    try{
        await driver.get(url);
        let result = await AxeBuilder(driver).analyze();
        return Promise.resolve(result);
    } 
    catch(err) {
        return Promise.reject(err);
    }
}
async function serializeTasks(driver, urls) {
  const results = [];
  for (const url of urls) {
    const result = await executeTask(driver, url);
    results.push(result);
  }
  return results;
}
function iterateThroughUrls(urls) {
    var driver = new WebDriver.Builder().forBrowser('firefox').build();
    serializeTasks(driver, urls)
      .then(results => console.log(results));
}

最新更新