java Selenium与Jbehave和Chromedriver挂起或崩溃
通过5个月的硒测试,我们遇到了一些主要的稳定性问题
有时,跑步看起来像冻结了一样。在故事超时之前,控制台和浏览器都不会说话。 故事超时后,没有其他事情发生,以下故事不会启动
其他时候,Chrome cashes会生成一个核心转储文件,故事结束,后续的故事继续
有了这两个问题,在我们正在发布的60个故事中,只有大约20个故事被报道,其他故事没有被执行(多亏了挂起)
我们还有另一个项目要做,故事更小、更少,而且使用的步骤也更有限。有时它运行得很好,但大多数时候,遇到了与我们的主项目相同的问题
经过几天的尝试和研究,我们没有发现任何结论,这就是为什么我来到这里,希望有人遇到同样的问题,并得到一些关于它的信息来分享
我们尝试在多个Docker上运行,以减少每个vm的费用,但我们遇到了相同的问题(60个故事中只有12个成功结束)
我们的大部分运行都是在centos虚拟机下的centos docker上进行的,但在windows 7和eclipse上也会发生同样的情况
我们目前正在使用Chromedriver 2.20、Selenium 2.48.0、Jbehave 4.0.5、Jbehave web Selenium 3.6-beta-2。 我们尝试了其他版本,但没有更好的
我们的测试是通过一个带有依赖项的jar启动的,我们添加了Ashot 1.5.2(https://github.com/yandex-qatools/ashot)和extent 2.40.2(http://relevantcodes.com/extentreports-for-selenium/)
谢谢你的关注,我希望没有什么被遗忘
# 1 楼答案
我遇到了一个类似的问题,并追踪到了一个时间问题——当我调试时,问题没有发生。 设置gradle以调试运行测试的JVM。 构建的示例代码段。端口5099(而不是默认的5005)的gradle文件是:
在报告/日志输出中检查问题发生的确切位置,然后在问题发生的部分添加断点
显然,当事物相互依赖时,当您在steps类中不处理这种依赖时,JBehave不会抱怨
在我的示例中,进行了一个API调用来创建一个对象,然后直接执行下面的步骤,假设该对象在那里,而没有进行检查,这在docker实例中显然不是这样,在本地设置中是这样的
我希望这对任何人都有帮助