selinium如何多线程_python selenium中的多线程-问答-阿里云开发者社区-阿里云

本文展示了如何在Python中使用Selenium和多线程来并发地打开多个浏览器实例,模拟登录并同步点击登录按钮。通过创建线程和使用 Barrier 对象,确保所有线程在继续执行前等待其他线程到达指定点,实现类似并行执行的效果。
摘要由CSDN通过智能技术生成

它是一个例子,使用线程来运行独立的浏览器,这些浏览器在列表按钮中填充表单并设置为True,以通知登录按钮已经准备好点击。当列表按钮中的所有浏览器都设置为True时,所有浏览器都会单击按钮。 看起来它几乎是同时运行的——也许只有系统才有一些同时连接这么多的连接。 我使用列表按钮来同步所有线程。每个线程的get号在列表中都有自己的位置。我不使用append(True),因为我不确定它是否可以是线程安全的。

import time

from selenium import webdriver

from threading import Thread

def 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:与thread . barrier(5)相同,5个线程必须运行barrier.wait()才能前进。

import time

from selenium import webdriver

from threading import Thread, Barrier

def 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 = 5

barrier = 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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值