Can I run multiple instances at once(simultaneously) with selenium-webdriver?
Answer a question
I'm trying to use Selenium to automate file uploading.
I'v already wrote a tiny program with the selenium-webdriver that works.
The problem is, there are thousands of files need to be uploaded, I'd like to run multiple browser instances simultaneously to speed up the automation. So I tried something like this
var i = 0;
while (i < 10) {
i++;
var driver = new webdriver.Builder()
.forBrowser('firefox')
.build();
// login and upload files......
}
I expected this would create 10 browser instances at once, and do the automation simultaneously.
But actually... the above code will creates browser instance 'one by one' which means, it won't create another instance until the previous one finishes.
I'v also tried execute the program in multiple shell instances, that will fire up multiple browser instances for me, but I just don't want to do this...
Answers
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.
更多推荐

所有评论(0)