Selenium multithreading



嘿,我正在尝试制作一个自动结账机器人,现在我制作了它,这样它就可以启动多个未检测到的chrome实例:

driver = [(uc.Chrome(use_subprocess=True ,options=options1)),(uc.Chrome(use_subprocess=True, options=options2)),(uc.Chrome(use_subprocess=True, options=options3))]

它运行的代码是这样的:

def Main1():
i = 0
login(i)
checkout(i)
def Main2():
i = 1
login(i)
checkout(i)
def Main3():
i = 2
login(i)
checkout(i)
p1 = threading.Thread(target=Main1, args=())
p1.start()
p2 = threading.Thread(target=Main2, args=())
p2.start()
p3 = threading.Thread(target=Main3, args=())
p3.start()

i代表驱动程序和帐户详细信息索引。我想问的是

  1. 如何提高此代码的效率?反复复制和粘贴似乎不是最有效的方法
  2. 如果我想运行x个实例数量,其中所有实例都有不同的帐户详细信息,并通过输入值来选择实例数量,那么在不手动创建新功能并向驱动程序列表中添加另一项的情况下,我如何做到这一点

创建一个线程列表,用循环运行它们。

def instance(n):
return [uc.Chrome(use_subprocess=True,options=option) for m in range(0, n)]

def Main(i):
login(i)
checkout(i)

threads = [threading.Thread(target=Main, args=(i,)) for i in instance(int(input('num of instances: ')))]
for t in threads:
t.start()

我已经能够使用以下代码来回答这个问题:

buynumber = int(input('Buy number : '))
threadlist = []
driver = []
option = []
for i in range(0, buynumber):
threadlist.append(i)
threads = [threading.Thread(target=Main, args=(i,)) for i in threadlist]
for i in range(0, buynumber):
option.append(Options())
option[i].headless = True
option[i].add_argument("--disable-gpu")
option[i].add_argument("--incognito")
option[i].add_argument("--headless")
for i in range(0, buynumber):
driver.insert(i, uc.Chrome(use_subprocess=True,options=option[i]))
for t in threads:
t.start()
for t in threads:
t.join()

感谢@硕在这里的帮助

相关内容

  • 没有找到相关文章

最新更新