Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to run multiple instances of one selenium test at once?

I have done some research and the consensus appears to state that this is impossible without a lot of knowledge and work. However:

  • Would it be possible to run the same test in different tabs simultaneously?

If so, how would I go about that? I'm using python and attempting to run 3-5 of the same test at once.

This is not a generic test, hence I do not care if it interrupts a clean testing environment.

like image 697
Colin Avatar asked Apr 02 '18 19:04

Colin


1 Answers

I think you can do that. But I feel the better or easier way to do that is using different windows. Having said that we can use either multithreading or multiprocessing or subprocess module to trigger the task in parallel (near parallel).

Multithreading example

Let me show you a simple example as to how to spawn multiple tests using threading module.

from selenium import webdriver
import threading
import time


def test_logic():
    driver = webdriver.Firefox()
    url = 'https://www.google.co.in'
    driver.get(url)
    # Implement your test logic
    time.sleep(2)
    driver.quit()

N = 5   # Number of browsers to spawn
thread_list = list()

# Start test
for i in range(N):
    t = threading.Thread(name='Test {}'.format(i), target=test_logic)
    t.start()
    time.sleep(1)
    print(t.name + ' started!')
    thread_list.append(t)

# Wait for all threads to complete
for thread in thread_list:
    thread.join()

print('Test completed!')

Here I am spawning 5 browsers to run test cases at one time. Instead of implementing the test logic I have put sleep time of 2 seconds for the purpose of demonstration. The code will fire up 5 firefox browsers (tested with python 2.7), open google and wait for 2 seconds before quitting.

Logs:

Test 0 started!
Test 1 started!
Test 2 started!
Test 3 started!
Test 4 started!
Test completed!

Process finished with exit code 0
like image 60
Swadhikar Avatar answered Sep 30 '22 18:09

Swadhikar