You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

能否同时运行同一Selenium测试多实例?多标签页实现方案咨询

Can I Run Multiple Instances of the Same Selenium Test in Separate Tabs?

Yes, absolutely! You don’t need an overly complex setup or deep specialized knowledge to run 3-5 instances of your test in parallel across different browser tabs. Here’s a straightforward, practical Python implementation using threading to handle concurrent execution:

Prerequisites

First, make sure you have the required packages installed to avoid driver setup headaches:

pip install selenium webdriver-manager

Step-by-Step Implementation

We’ll use Python’s built-in threading module to spawn multiple threads—each thread will control its own browser tab and run your test logic independently.

1. Define Your Core Test Function

Replace the example actions below with your actual test steps. This function will be reused across all tab instances:

from selenium import webdriver
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service

def run_test_instance(tab_number):
    # Initialize the Chrome driver (webdriver-manager handles driver updates automatically)
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
    
    # Open a new tab in the same browser window
    driver.execute_script("window.open('');")
    # Switch control to the newly opened tab
    driver.switch_to.window(driver.window_handles[tab_number])
    
    # --------------------------
    # Your test logic starts here
    print(f"Executing test in tab {tab_number + 1}")
    driver.get("https://your-target-test-url.com")
    # Example test action: interact with a page element
    # driver.find_element(By.CSS_SELECTOR, ".your-element-class").click()
    # --------------------------
    
    # Optional: Keep the tab open for manual verification (remove if auto-closing is preferred)
    input(f"Press Enter to close tab {tab_number + 1}...")
    driver.close()
    driver.quit()

2. Spawn Threads for Parallel Execution

Now, create and start 3-5 threads to run your test across multiple tabs at the same time:

import threading

if __name__ == "__main__":
    # Set the number of test instances you want to run (3-5 as requested)
    total_instances = 4
    threads = []
    
    for i in range(total_instances):
        thread = threading.Thread(target=run_test_instance, args=(i,))
        threads.append(thread)
        thread.start()
    
    # Wait for all threads to finish execution
    for thread in threads:
        thread.join()
    
    print("All test instances have completed!")

Quick Notes

  • Threading vs. Multiprocessing: We use threading here because it’s lightweight and works perfectly for browser automation tasks (which are mostly I/O-bound). If your test involves heavy CPU-intensive tasks, you could swap in multiprocessing instead, but threading is ideal for this use case.
  • Window Handles: Each tab gets a unique window handle—we use driver.switch_to.window() to ensure each thread only interacts with its assigned tab.
  • No Clean Environment Concerns: Since you mentioned you don’t need to worry about isolating test environments, you can skip extra steps like creating separate browser profiles. The setup above works as-is for your needs.

内容的提问来源于stack exchange,提问作者Colin

火山引擎 最新活动