【问题标题】:Close residual Selenium WebDriver instances after forced stop强制停止后关闭剩余的 Selenium WebDriver 实例
【发布时间】:2014-12-13 13:27:22
【问题描述】:

我想找到一些新的概念性想法,但欢迎提供具体的解决方案。

技术

  • 版本控制系统:SVN
  • 持续集成工具:TeamCity
  • 代理:Windows(无管理员权限!)
  • 语言:Java
  • WebDriver:InternetExplorerDriver
  • 测试:JUnit
  • 构建:蚂蚁

问题

如果有人在运行时停止配置(TeamCity GUI 中的行),则不会执行 afterClass 方法(它会关闭浏览器)并且浏览器会变为残留。

结构

beforeClass 启动驱动,afterClass 关闭它)

流程

(您看到红色箭头的地方,有人停止了配置 -> 例如:(s)他观察到测试失败并想再次运行它,但它产生了残留的浏览器,因为afterClass 未执行)

以前的尝试

  • 转到代理并手动重新启动它(1 次/1-4 周)- 有效,但有很大的缺点
  • 去找代理并尝试使用taskkilltaskkill /F - 不起作用
  • 其他 Java 尝试(在测试之前运行“清理程序” - 本机 Windows 命令),但没有成功

你有什么想法吗?它们可以与agent、TeamCity、Java代码、ant、具体配置等相关。

【问题讨论】:

  • 查看 junit 规则 TestWatcher 并相应地拦截失败并退出驱动程序。

标签: java memory-leaks junit selenium-webdriver teamcity


【解决方案1】:

如果我正确理解了这个问题,停止配置就是杀死 jvm,留下浏览器残留。我对么?如果是这样,您可以尝试添加关闭挂钩并在关闭挂钩中处理浏览器的关闭。也就是说,您可以将浏览器关闭代码块放在一个方法中,并从关闭钩子和 afterClass 调用它,并进行适当的异常处理。

希望这个回答对你有帮助。

【讨论】:

    猜你喜欢
    • 2022-10-07
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    相关资源
    最近更新 更多