测试积点老人 发表于 2022-5-6 10:16:12

python selenium 多开浏览器能够同步做一样的动作吗

在使用selenium多开浏览器(同chrome多个),
但每个网页加载的时间尽不相同
所以操作下一步时每个开始的时间不一样
我想问能不能让前面做完某步的浏览器等全部浏览器跑完再一起进行下一步
ex: 第一个网页点完按钮,等待2,3...n个浏览器都点完按钮在执行点下一个按钮的动作。
我的代码示例如下
from datetime import datetime
from selenium import webdriver
import threading
from multiprocessing import Queue
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options

def selenium_mult():
    chrome_options = Options()
    chrome_options.add_argument("--headless")
    ser=Service('./chromedriver')
    driver = webdriver.Chrome(service = ser,options=chrome_options)
    driver.set_window_size(540,480)
    driver.get('https:/website')

    WebDriverWait(driver,10,1).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="btn"]/div/div/button')))
    driver.find_element(By.XPATH, '//*[@id="btn"]/div/div/button').click()#click button 1
    Ftime = datetime.now()

    WebDriverWait(driver,30,1).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="btn"]/div/div/div/div/div')))
    driver.find_element(By.XPATH, '//*[@id="btn"]/div/div/div/div/div').click() #click button 2

if __name__ == '__main__':
    for i in range(5):
      t = threading.Thread(target=selenium_mult)
      t.start()
   


bellas 发表于 2022-5-7 10:34:50

应该可以

kallinr 发表于 2022-5-7 11:31:36

可以试一下

暗涧幽火 发表于 2022-5-7 11:45:45

可以的。

如果您认为将其分成两部分将有助于加快速度,那么您可以这样做(进一步拆分技术)。
1) 编写一个函数,将网站的 id 作为参数。
2)编写一个for循环,一次又一次地调用def发送nenxt id。
像这样的东西:

def check(id):
    open("id")

ids=

for id in ids:
    check(id)

qqq911 发表于 2022-5-7 12:24:56

可以用多台

jingzizx 发表于 2022-5-7 20:49:08

等待/判断
页: [1]
查看完整版本: python selenium 多开浏览器能够同步做一样的动作吗