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

Playwright+unittest框架中使用input()选择测试浏览器失效问题排查

问题原因
  • 类属性定义阶段执行input()时机错误:Python导入该测试类时就会立即执行input()语句,而非等到测试用例运行时才触发。unittest的测试收集、HTMLTestRunner运行器、IDE内置测试面板等场景下,大多默认不开放交互控制台的标准输入流,input()要么直接卡住,要么抛出EOF错误直接终止运行。
  • 未做输入内容归一化处理:用户输入时可能带前后空格、大小写不匹配(比如输入firefox、Firefox),无法命中你的分支判断逻辑,导致浏览器启动不符合预期。
修复方案

将input()调用移到测试启动后的执行阶段,同时增加输入内容的清洗逻辑,修改后的代码如下:

from playwright.sync_api import sync_playwright
from locators import Locators_evou
import unittest
import HtmlTestRunner


class Test(unittest.TestCase):
    # 类属性仅保留默认标记,不在定义阶段执行input
    browser_option = None
    
    @classmethod
    def setUpClass(cls):
        # 所有测试用例执行前仅触发一次输入交互
        input_val = input("Choose a browser (Chrome/Firefox/Edge): ").strip()
        # 归一化处理:空值默认Chrome,统一首字母大写避免大小写输入错误
        if not input_val:
            cls.browser_option = "Chrome"
        else:
            cls.browser_option = input_val.capitalize()
    
    def get_browser(self, p):
        browserR = p.chromium.launch(headless=False)
        if self.browser_option == "Firefox":
            browserR = p.firefox.launch(headless=False)
        elif self.browser_option == "Edge":
            browserR = p.chromium.launch(channel="msedge",headless=False)    
        return browserR

    def test_company1(self): 
        with sync_playwright() as p:
            browser = self.get_browser(p)
            page = browser.new_page()
            page.goto("http://localhost:3000/organigrama/miempresa-edit")
            browser.close()
运行注意事项

不要使用IDE内置的测试面板运行该代码,需要直接在终端用命令python 你的测试文件名.py执行,才能正常触发控制台输入交互。

内容的提问来源于stack exchange,提问作者Liliana González

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:45:04