pytest中使用selenium代码运行完后浏览器自动关闭

NovLeo / 2024-12-29 / 原文

遇到的问题

在用selenium做web自动化测试时,测试用例执行完后,自动关闭浏览器

if cls.__driver is not None and cls.__switch is False:
    cls.__driver.quit()
    cls.__driver = None

在写代码的时候发现,就算设置了前后置,并且添加了判断已经创建了浏览器驱动实例,并且switch标记为False才执行关闭操作,通过调试发现,就算跳过了这个判断,浏览器还是会自动关闭,运行窗口没有任何提示。

调试后发现,原来是WebDriver的机制问题。默认情况下,当 WebDriver 会话结束时,浏览器窗口会自动关闭。通过设置 "detach" 选项为 True,可以防止这种情况发生。

    def get_driver(cls):
        if cls.__driver is None:
            options = webdriver.ChromeOptions()
            options.add_experimental_option('detach', True)
            cls.__driver = webdriver.Chrome(options=options)
            cls.__driver.maximize_window()
            cls.__driver.implicitly_wait(10)
        return cls.__driver