一尘不染

如果在Jenkins上终止测试,则Selenium驱动程序实例仍然存在

selenium

好的,所以我想知道如果通过jenkins中止测试,如何使我的驱动程序/浏览器会话正确退出。在本地,如果我运行测试并中止测试,浏览器将正确退出。但是通过詹金斯,这不会发生。如果我在selenium网格上运行测试的测试阶段中止该作业,则浏览器保持打开状态-
导致该节点仍显示为正在使用,因为它未选择该中止的作业本应杀死其浏览器会话。

我一直在搞黄瓜钩子,但是我想得更多,所以我不确定是否可以用钩子来解决这个问题,因为在本地运行时不会发生这种情况。我现在认为这应该是selenium网格或詹金斯的设置。

我最好的解决方案是使用一个类似于下面的钩子,该钩子可以判断它是否正在远程运行,并在中止/通过/失败时终止会话。但是,如果通过詹金斯(Jenkins)或selenium网格设置有任何解决方案,那就太好了!谢谢!

this.registerHandler('After', function (event, done) {
     // Some code to clear browser session 
    done();
});

阅读 207

收藏
2020-06-26

共1个答案

一尘不染

我认为您不需要在客户端代码上做任何额外的事情。

Selenium Grid特别具有三个用于此类清理的参数。

  • -browserTimeout 以秒为单位:运行WebDriver命令时允许浏览器会话挂起的秒数(例如:driver.get(url))。如果仍在处理WebDriver命令时达到超时,则会话将退出。最小值为60。未指定,零或负值表示无限期等待。 Default: 0

  • -cleanUpCycle 以毫秒为单位:指定集线器多久轮询一次正在运行的代理以获取超时(即挂起)的线程。还必须指定 timeout 选项。 Default: 5000 (5秒)

  • -timeout-sessionTimeout 以秒为单位):指定在服务器自动终止最近X秒内没有任何活动的会话之前的超时时间。然后将释放测试插槽,以供其他测试使用。这通常用于处理客户端崩溃。对于网格中心/节点角色,还必须设置cleanUpCycle。 Default: 1800

结合使用以上三个参数,可以将节点配置为自动关闭 孤立的 浏览器实例和会话。

还有相关的一些其它文档timeouts的Grid‘2
wiki页面在这里

希望有帮助!

2020-06-26