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

能否在同一Selenium会话中依次运行多个Python脚本?

在同一浏览器会话中运行多份Python UI自动化脚本的方案

完全可行,问题出在你之前用BAT逐个启动脚本时,每个脚本都独立初始化了新的浏览器驱动实例,所以每次都会打开新窗口。只要让所有测试逻辑共享同一个浏览器驱动(driver)实例,就能在同一会话里依次执行所有测试用例。

下面是两种实用的实现方式:

方式1:用统一入口脚本管理共享driver

把每个测试脚本的逻辑封装成接收driver参数的函数,然后写一个入口脚本来初始化一次driver,再依次调用这些函数。

示例结构:

  • main.py(入口脚本)
  • script1_login.py(登录测试)
  • script2_click.py(点击按钮测试)
  • script3_logout.py(登出测试)

main.py 代码:

from selenium import webdriver
import script1_login
import script2_click
import script3_logout

if __name__ == "__main__":
    # 只初始化一次浏览器会话
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)
    
    # 把driver传递给各个脚本的测试函数,复用会话
    script1_login.run_login(driver)
    script2_click.run_button_click(driver)
    script3_logout.run_logout(driver)
    
    # 所有测试完成后关闭浏览器
    driver.quit()

script1_login.py 代码示例:

def run_login(driver):
    driver.get("你的登录页面URL")
    # 执行登录操作
    driver.find_element("id", "username").send_keys("test_user")
    driver.find_element("id", "password").send_keys("test_pwd")
    driver.find_element("id", "login-btn").click()

其他脚本(script2_click.py、script3_logout.py)同理,都把测试逻辑写在接收driver参数的函数里即可。

方式2:用测试框架的会话级fixture(以pytest为例)

如果你的测试用例较多,用pytest这类测试框架会更便于管理。通过定义会话级fixture,可以让所有测试用例共享同一个driver实例。

步骤1:创建conftest.py(pytest会自动识别这个文件中的fixture)

import pytest
from selenium import webdriver

@pytest.fixture(scope="session")
def driver():
    # 会话开始时初始化一次driver
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)
    yield driver
    # 会话结束时关闭driver
    driver.quit()

步骤2:编写各测试脚本
比如test_login.py:

def test_login(driver):
    driver.get("你的登录页面URL")
    # 执行登录操作
    driver.find_element("id", "username").send_keys("test_user")
    # ...其他登录步骤

test_click.py:

def test_click_button(driver):
    # 此时driver已经是登录后的会话,直接执行点击操作
    driver.find_element("id", "target-btn").click()

test_logout.py:

def test_logout(driver):
    # 执行登出操作
    driver.find_element("id", "logout-btn").click()

步骤3:运行测试
在终端执行命令:

pytest

pytest会自动复用同一个浏览器会话执行所有测试用例,不会打开新窗口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 23:22:16