You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在浏览器中运行基于Django框架的Python Selenium测试脚本?

How to Trigger Selenium Tests via a Django URL

Got it! Let's walk through how to set up a Django endpoint that launches your Selenium test when you visit a specific URL. Here's a practical, step-by-step approach that works for local development/testing:

1. Create a Django View to Handle the Trigger

First, you'll need a view function that runs your Selenium test when a request comes in. Since Selenium can block the Django request thread while executing, it’s smart to run the test in a separate thread so your server doesn’t hang waiting for the test to finish.

Here’s an example view:

# your_app/views.py
from django.http import HttpResponse
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import threading

def run_selenium_test():
    # Configure Chrome options (adjust for Firefox/Edge if needed)
    chrome_options = Options()
    # Uncomment these lines if you want headless mode (no visible browser window)
    # chrome_options.add_argument("--headless=new")
    # chrome_options.add_argument("--no-sandbox")
    # chrome_options.add_argument("--disable-dev-shm-usage")

    # Initialize the browser driver
    driver = webdriver.Chrome(options=chrome_options)
    try:
        # Replace this with your actual test logic
        driver.get("https://example.com")
        print(f"Test finished! Page title: {driver.title}")
        # Add your test steps here—element clicks, form submissions, assertions, etc.
    finally:
        # Always quit the driver to clean up browser resources
        driver.quit()

def trigger_selenium_test(request):
    # Run the test in a background thread to avoid blocking the HTTP response
    test_thread = threading.Thread(target=run_selenium_test)
    test_thread.start()
    return HttpResponse("Selenium test started! Check your terminal for test logs.")

2. Map the View to a URL

Next, link your new view to a URL so you can access it via a web address. Open your app’s urls.py and add the following pattern:

# your_app/urls.py
from django.urls import path
from . import views

urlpatterns = [
    # Your existing URLs go here...
    path('run-selenium-test/', views.trigger_selenium_test, name='run_selenium_test'),
]

3. Fix Browser Driver Setup (Critical!)

To avoid manual driver path headaches, use webdriver-manager to automatically download and manage the correct browser driver version:

  1. Install the package first:
pip install webdriver-manager
  1. Update the driver initialization in run_selenium_test():
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)

4. Important Notes & Warnings

  • Never use this in production! Launching browsers via a public endpoint is a huge security risk and will drain server resources. This is only for local development or internal test environments.
  • If you’re running on a Linux server without a desktop environment, you’ll need a virtual display. Use pyvirtualdisplay to handle this:
    pip install pyvirtualdisplay
    
    Add this code to run_selenium_test() before initializing the driver:
    from pyvirtualdisplay import Display
    display = Display(visible=0, size=(1024, 768))
    display.start()
    
  • All Selenium output will show up in your terminal since we’re running the test in a background thread.

Now start your Django server (python manage.py runserver) and visit http://localhost:8000/run-selenium-test/ to trigger your test directly from the browser!

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:51:39