[英]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.