繁体   English   中英

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

[英]How to avoid opening multiple chrome windows for running multiple URLs using Selenium WebDriverJS

尝试解析多个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循环中一个接一个地运行promise。

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

}

暂无
暂无

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

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