Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果在Jenkins上中止测试,Selenium驱动程序实例将持续存在_Selenium_Jenkins_Protractor_Selenium Grid_Cucumberjs - Fatal编程技术网

如果在Jenkins上中止测试,Selenium驱动程序实例将持续存在

如果在Jenkins上中止测试,Selenium驱动程序实例将持续存在,selenium,jenkins,protractor,selenium-grid,cucumberjs,Selenium,Jenkins,Protractor,Selenium Grid,Cucumberjs,好的,所以我想知道如果通过jenkins中止测试,如何让我的驱动程序/浏览器会话正确退出。在本地,如果我运行测试并中止测试,浏览器将正常退出。然而,通过詹金斯,这并没有发生。如果我在selenium网格上运行测试的测试阶段中止作业,浏览器将保持打开状态,导致节点仍显示为正在使用,因为它没有检测到中止的作业本应终止其浏览器会话 我一直在胡闹黄瓜钩子,但我越想,我不确定我是否可以用钩子处理这个问题,因为在本地运行时,这种行为不会发生。我现在认为这需要在selenium网格或jenkins上设置 我最

好的,所以我想知道如果通过jenkins中止测试,如何让我的驱动程序/浏览器会话正确退出。在本地,如果我运行测试并中止测试,浏览器将正常退出。然而,通过詹金斯,这并没有发生。如果我在selenium网格上运行测试的测试阶段中止作业,浏览器将保持打开状态,导致节点仍显示为正在使用,因为它没有检测到中止的作业本应终止其浏览器会话

我一直在胡闹黄瓜钩子,但我越想,我不确定我是否可以用钩子处理这个问题,因为在本地运行时,这种行为不会发生。我现在认为这需要在selenium网格或jenkins上设置

我最理想的解决方案是使用一个如下所示的钩子,它可以判断会话是否正在远程运行,并在会话中止/通过/失败时终止会话。但是如果通过jenkins或selenium网格设置有任何解决方案,那也太好了!谢谢大家!

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

这基本上与在本地中止执行之后想要做一些事情是一样的,jenkins对网格一无所知,它只构建代码


考虑根据前一个任务的执行结果执行单独的任务,在该任务中,您可以通过终止阻塞的进程并可能重新启动网格本身来清理您的环境。

这基本上与您在本地中止执行后想要做些什么相同,jenkins对网格一无所知,它只生成代码


考虑使用单独的作业,该作业将根据前一个作业的执行结果来执行,在该作业中,您可以通过杀死阻塞的进程并可能重新启动网格本身来清理环境。

我认为您不需要在客户端代码中做任何额外的工作

selenium网格有三个参数专门用于此类清理

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

  • -cleanUpCycle
    以毫秒为单位:指定集线器轮询运行代理的超时(即挂起)线程的频率。还必须指定超时选项。
    默认值:5000
    (5秒)

  • -timeout
    -sessionTimeout
    秒数:指定服务器自动终止在过去X秒内没有任何活动的会话之前的超时时间。然后,测试槽将被释放以供另一个测试使用。这通常用于处理客户端崩溃。对于网格中心/节点角色,还必须设置cleanUpCycle
    默认值:1800

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

此文档在selenium uber jar中作为命令行文档提供。您可以参考SO答案以了解如何获得它,并查看还有哪些其他选项可用

在Grid的2 wiki页面上有一些与超时相关的附加文档


希望有帮助

我认为您不需要在客户端代码中做任何额外的操作

selenium网格有三个参数专门用于此类清理

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

  • -cleanUpCycle
    以毫秒为单位:指定集线器轮询运行代理的超时(即挂起)线程的频率。还必须指定超时选项。
    默认值:5000
    (5秒)

  • -timeout
    -sessionTimeout
    秒数:指定服务器自动终止在过去X秒内没有任何活动的会话之前的超时时间。然后,测试槽将被释放以供另一个测试使用。这通常用于处理客户端崩溃。对于网格中心/节点角色,还必须设置cleanUpCycle
    默认值:1800

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

此文档在selenium uber jar中作为命令行文档提供。您可以参考SO答案以了解如何获得它,并查看还有哪些其他选项可用

在Grid的2 wiki页面上有一些与超时相关的附加文档


希望有帮助

这个解决方案的唯一问题是,我们有多个团队针对网格运行测试。我不想让另一项工作扼杀运行测试,重新启动网格可以做到这一点。这个解决方案的唯一问题是,我们有多个团队针对网格运行测试。我不想让另一项工作扼杀正在运行的测试,重新启动网格可以做到这一点。谢谢你的回复!所以在网格设置中,我们有一个browserTimeout:16000,cleanUpCycle:5000,timeout:19000。我们