簡體   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