当前位置: 首页 > 面试题库 >

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

弓磊
2023-03-14
问题内容

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

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

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

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

问题答案:

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

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页面在这里。

希望有帮助!



 类似资料:
  • 我试图在Linux上用jenkins构建我的maven项目,但是我的selenium测试失败了,出现了这个异常 运行TestSuite配置TestNG:org.apache.maven.surefire.testng.conf.TestNG652Configurator@61db2215测试运行: 6,失败: 1,错误: 0,跳过: 5,时间流逝: 0.51秒 我知道我在窗口而不是Linux上使用

  • 我正在使用TestNG+WebDriver&以以下方式初始化浏览器- 然后测试类就像- 但是在test class中,我得到了null指针异常作为驱动程序实例在null中。测试类中驱动程序为空的原因吗?有没有办法在执行开始时只启动一个浏览器&结束时关闭而不使用静态的?

  • 问题内容: 我已经在heroku雪松堆栈上成功运行resque并将接口安装在导轨上。 当我开始工作时,一切正常。工人处理工作。但是当我杀死工人时,Resque仍然认为该工人有空。当我启动另一个工作程序时,它认为有2个工作程序,但实际上只有一个正在运行。 我在这里也注意到了形式http://devcenter.heroku.com/articles/ps,heroku在杀死工人时会发送SIGTERM

  • 问题内容: 我正在尝试通过for循环在多个浏览器中运行相同的测试,但它始终仅在Firefox上运行。 一项有趣的观察;当我包含该参数时,它仅在Internet Explorer上运行。 Selenium Webdriver是否以这种方式工作,或者我的理解是错误的? 问题答案: 我实际上已经在Java中完成了此操作,以下对我来说效果很好: 如果您要使用其他语言编写测试,则当然需要对此进行调整,我知道

  • 请帮助我处理这个主线程/父线程将触发子线程。如果我们停止父线程/主线程,它还必须停止所有子线程/子线程 我想用中断做这件事,但做不到。请帮我把代码弄出来 以及如何确保所有子线程都已停止?有什么办法也可以做到这一点吗 提前谢谢! 我正在尝试这样做: 公共类ThreadTest1扩展Thread{私有静态最终记录器LOGGER=Logger.get记录器(mylogger); }

  • 我正在尝试使用Python Splinter Selenium PhantomJS进行基本测试,但我无法启动phantomjs浏览器。(Chrome 我得到一个错误: 此外,当我跑步时: 我基本上得到了同样的错误。 看起来PhantomJS正在使用远程驱动程序连接到远程服务器,但splinter没有启动selenium(?)PhantomJS要连接到的服务器。我不介意进入splinter(?)的源