1
import threading 

def rand_function1(): 
    #random actions 

def rand_function2(): 
    #random actions 

def main() 
    rand_function1 
    rand_function2 
    return 


if __name__ == '__main__': 
    url_list = "https://www.rand_urls.com/" 
    driver = webdriver.Firefox() 
    for t in range(10): 
     t = threading.Thread(target=main) 
     t.start() 

У меня есть эта простая программа, которую я пытаюсь открыть URL, используя 10 веб-драйверов Firefox. Тем не менее, все, что он делает, использует один браузер и продолжает цикл, хотя URL-адреса предполагали, что отдельный браузер. Я буду использовать уникальные прокси для каждого браузера, поэтому открытие вкладок не будет вариантом.Selenium Threads: Как открыть тот же браузер в нескольких потоках? для целей каждого браузера с использованием уникального прокси

Как получить n темы для запуска основной функции по отдельности с помощью собственного веб-драйвера Firefox?

+0

Существует возможность открыть 10 ссылок на отдельной вкладке 'Firefox'. Вы ищете это или действительно хотите управлять 10 сеансами браузера в одном скрипте? – Andersson

+0

Я использую обратно подключенные/вращающиеся прокси – JJ88

+0

Ну, если вы действительно хотите это сделать, создайте 'driver' в' main() ', чтобы каждый поток использовал другой экземпляр – Shane

ответ

1

Согласно this и this предыдущий вопрос, селен не является потокобезопасным.

Необходимо создать драйверы внутри основного устройства, чтобы каждый поток имел свой собственный драйвер.

import threading 

def rand_function1(): 
    #random actions 

def rand_function2(): 
    #random actions 

def main() 
    # use a different driver for each thread 
    driver = webdriver.Firefox() 
    rand_function1 
    rand_function2 
    return 


if __name__ == '__main__': 
    url_list = "https://www.rand_urls.com/" 
    for t in range(10): 
     t = threading.Thread(target=main) 
     t.start() 

 Смежные вопросы

  • Нет связанных вопросов^_^