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

Selenium Java捕获表单提交后返回OrderNo的网络URL响应

Hey there! I’ve dealt with exactly this kind of problem before when automating form submissions, so let’s walk through how to capture that target URL (and the embedded OrderNo) using Selenium—specifically leveraging its DevTools API, which is perfect for monitoring network activity.

Solution: Use Selenium 4 DevTools to Monitor Network Requests

First, make sure you’re running Selenium 4 or later—DevTools support is a key feature added in this version. If you’re using Python, update Selenium with:

pip install --upgrade selenium

Step-by-Step Implementation

Here’s a complete, customizable Python example tailored to your workflow:

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

# Initialize Chrome driver with DevTools enabled
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

# Turn on network monitoring via DevTools
driver.execute_cdp_cmd("Network.enable", {})

# Store requests that match our target criteria
target_requests = []

def capture_order_request(event):
    response_data = event.get("response", {})
    request_url = response_data.get("url", "")
    
    # Customize this filter to match your actual request (adjust based on what you see in DevTools)
    # For example: if the request path includes "/api/order-submit" or contains "OrderNo"
    if "OrderNo" in request_url or "/submit-order" in request_url:
        target_requests.append(response_data)
        print(f"Captured target URL: {request_url}")
        
        # Optional: Fetch the full response body to extract OrderNo directly
        response_body = driver.execute_cdp_cmd(
            "Network.getResponseBody",
            {"requestId": event["requestId"]}
        )
        print(f"Response content with OrderNo: {response_body['body']}")

# Attach our listener to the "ResponseReceived" network event
driver.devtools.network.on("Network.responseReceived", capture_order_request)

# Navigate to your form page
driver.get("https://your-form-page-url.com")

## Fill out and submit the form (replace selectors with your actual form fields)
driver.find_element(By.ID, "full_name").send_keys("Test User")
driver.find_element(By.ID, "email").send_keys("test@example.com")
# Add all other required fields here (phone, address, etc.)

# Submit the form
submit_btn = driver.find_element(By.CSS_SELECTOR, "button[type='submit']")
submit_btn.click()

# Wait until we capture the target request (adjust timeout based on your network speed)
WebDriverWait(driver, 15).until(lambda d: len(target_requests) > 0)

# Access the captured URL/OrderNo
for req in target_requests:
    print(f"Final captured URL: {req['url']}")

# Clean up
driver.quit()

Customization Tips for Your Specific Case

  • Tweak the Filter: Instead of checking for "OrderNo" in the URL, filter based on what you see in your browser’s DevTools (e.g., the request path like /api/create-order, or request method POST). Use the event object to inspect details like event["request"]["method"].
  • Firefox Support: If you prefer Firefox, replace the Chrome driver with webdriver.Firefox()—the DevTools API works almost identically across browsers.
  • Alternative: Direct Request Simulation: If you can extract all hidden form parameters (like CSRF tokens), you could use the requests library to send the POST request directly. This is faster, but requires handling any dynamic JS-generated parameters.

Troubleshooting

  • If no requests are captured, try using the Network.requestWillBeSent event instead (catches requests before they’re sent, not just when responses are received).
  • Ensure the timeout in WebDriverWait is long enough—slow networks or heavy backend processing may require more time.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:39:29