Selenide如何避免为后续测试复用浏览器会话
Selenide并行测试会话隔离解决方案
针对你遇到的并行测试中浏览器会话复用导致登录状态残留的问题,无需手动调用WebDriverRunner.closeWebDriver(),可以通过Selenide内置配置实现每次测试使用全新会话:
1. 通过配置文件全局设置
在项目的src/test/resources目录下创建或修改selenide.properties文件,添加以下配置:
# 每次测试结束后重置浏览器会话(关闭当前driver) selenide.browserResetStrategy=afterTest # 测试结束后不保留浏览器窗口 selenide.holdBrowserOpen=false
2. 在测试代码中动态配置
如果需要在代码中灵活控制,可以在测试类的@BeforeEach方法中设置Selenide配置:
import com.codeborne.selenide.Configuration; import com.codeborne.selenide.BrowserResetStrategy; import org.junit.jupiter.api.BeforeEach; class YourTestClass { @BeforeEach void setupTestSession() { // 每次测试后自动关闭浏览器会话 Configuration.browserResetStrategy = BrowserResetStrategy.AFTER_TEST; Configuration.holdBrowserOpen = false; } @ParameterizedTest @ValueSource(strings = {"value1", "value2", ... , "value8"}) void demo(String message) { open("http://localhost:8080/login", LoginPage.class) .loginAsDefaultUser() .isMessageDisplayed(message); } }
3. 补充:强制清理登录状态(可选)
如果只需要清除登录会话而非完全重启浏览器,可在测试开始前清理Cookie和本地存储:
@BeforeEach void clearAuthState() { open("/"); clearBrowserCookies(); clearBrowserLocalStorage(); }
这样配置后,每个测试方法执行完毕会自动关闭当前浏览器会话,下一个测试会启动全新的浏览器实例,避免登录状态残留导致的重定向问题。
内容的提问来源于stack exchange,提问作者Sundel
相关产品推荐
相关产品推荐

