Can I run multiple instances at once(simultaneously) with selenium-webdriver?
Well you need to create multiple threads instead of looping, then you can start each upload in parallel threads. You are on the right track. You dont need selenium grid to achieve this.
lookup about multithreading. You can start with this answer
It's not right you need grid for executing multiple browser sessions. You can invoke multiple browser sessions by just creating multiple driver objects, and managing them. Each session will be separate if you want them to be.
Grid is for scaling as there is a limitation on the no of browser instances you can run keeping your machine performance intact and tests stable. Like more than 5 chrome instances in a single machine. If you want to do more than that then you have to use selenium Grid.
You should create a new instance of the WebDriver and it's capabilities for each new browser you want to open.
The following will open Google in five separate instances of Chrome.
import * as webdriver from "selenium-webdriver";
import * as Chrome from 'selenium-webdriver/chrome';
function loadSelenium(){
let options = new Chrome.Options();
let capabilities = options.toCapabilities();
console.log('loading another');
return new webdriver.Builder()
.forBrowser('chrome')
.withCapabilities(capabilities)
.build();
}
for(let i = 0; i < 5; i++) {
let driver = loadSelenium();
driver.get('http://www.google.com');
}