Multithreading in python selenium Multithreading in python selenium multithreading multithreading

Multithreading in python selenium


It is example uses threads to run separated browsers which fill form and set True in list buttons to inform that login button is ready to click. When all browsers set True in list buttons then all of them click buttons.

It seems that it runs amost a the same time - maybe only system has some to makes so many connections at the same time.

I used list buttons to synchronize all threads. Every thread get number to have own place in list. I don't use append(True) because I'm not sure it can be thread-safe.

import timefrom selenium import webdriverfrom threading import Threaddef func(number):    driver = webdriver.Chrome()    #driver.set_window_size(920, 680)    driver.get(url)    driver.find_element_by_id("email").send_keys("xx")    driver.find_element_by_id("pass").send_keys("yy")    b = driver.find_element_by_id("loginbutton")    buttons[number] = True    print(buttons)    # wait for other buttons    while not all(buttons):        pass    print('click', number)    b.click()# ---url = 'https://www.facebook.com/'number_of_threads = 5#buttons = [False * number_of_threads] # create place buttons = []threads = []for number in range(number_of_threads):    t = Thread(target=func, args=(number,)) # get number for place in list `buttons`    t.start()    threads.append(t)    buttons.append(False) # create place for t in threads:    t.join()

EDIT: The same with threading.Barrier(5) and 5 threads will have to run barrier.wait() to move forward.

import timefrom selenium import webdriverfrom threading import Thread, Barrierdef func(barrier):    driver = webdriver.Chrome()    #driver.set_window_size(920, 680)    driver.get(url)    driver.find_element_by_id("email").send_keys("xx")    driver.find_element_by_id("pass").send_keys("yy")    b = driver.find_element_by_id("loginbutton")    print('wait for others')    barrier.wait()    print('click')    b.click()# ---url = 'https://www.facebook.com/'number_of_threads = 5barrier = Barrier(number_of_threads)threads = []for _ in range(number_of_threads):    t = Thread(target=func, args=(barrier,))     t.start()    threads.append(t)for t in threads:    t.join()