Selenium Threads:如何在多个线程中打开同一个浏览器?为使用唯一代理的每个浏览器的目的

JJ8*_*J88 3 python selenium multithreading multiprocessing python-3.x

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()
Run Code Online (Sandbox Code Playgroud)

我有一个简单的程序,我试图使用 10 个 Firefox 网络驱动程序打开 url。但是,它所做的一切都使用一个浏览器,并继续循环,尽管 url 认为是单个浏览器。我将为每个浏览器使用一个独特的代理,因此无法打开标签页。

如何让n线程使用其自己的 Firefox Web 驱动程序单独运行 main 函数?

Rod*_*una 6

根据thisthis previous question,selenium不是线程安全的

您应该在 main 中创建驱动程序,以便每个线程都有自己的驱动程序。

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()
Run Code Online (Sandbox Code Playgroud)