java—如何同时运行两个selenium python程序

zi8p0yeb  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(376)

我想同时运行两次代码以节省时间。我是一个初学者,我做了一些研究,得到了多线程这个词,听说了pytest库,但我不知道怎么做,甚至我找不到示例代码。请帮帮我!我在等你的回答

import selenium
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from shutil import which
import time
import pandas as pd
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
Links = []
chrome_path = which('chromedriver')
driver = webdriver.Chrome(executable_path=chrome_path)
driver.maximize_window()

driver.get('https://www.google.com')

text = driver.find_element_by_xpath('//input[@class="gLFyf gsfi"]')
text.send_keys('Hello')

driver.find_element_by_xpath('//div[@class="FPdoLc tfB0Bf"]//input[1]').click()
time.sleep(3)

driver.close()

我想同时跑两次?有人帮帮我吗

hl0ma9xz

hl0ma9xz1#

将整个selenium代码重构为一个类/方法,该类/方法接受webdriver的示例作为输入(这不是强制性的,只是兴趣的分离)。
然后根据需要的线程数运行该方法。
下面是一个基于代码的示例,还添加了从每个线程获取结果的代码。

import time

import concurrent.futures
from selenium import webdriver

def task(driver):
    driver.get('https://www.google.com')
    text = driver.find_element_by_xpath('//input[@class="gLFyf gsfi"]')
    text.send_keys('Hello')
    driver.find_element_by_xpath('//div[@class="FPdoLc tfB0Bf"]//input[1]').click()
    time.sleep(3)
    driver.close()

if __name__ == '__main__':
    futures = []
    with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
        for i in range(3):
            driver = webdriver.Chrome(executable_path="./chromedriver")
            driver.maximize_window()
            futures.append(executor.submit(task, driver))
    for future in futures:
        print(future.result())
bhmjp9jg

bhmjp9jg2#

你可以一直使用“jupyter笔记本”,然后你可以用一个新的名字保存为你的脚本,并同时运行它们。

相关问题