我希望基于Selenium RC的自动化Web测试套件可以在遇到某些错误时为页面截图。测试套件是持续集成过程的一部分,从技术上讲,它是由作为 Windows服务 运行的CruiseControl执行的。
selenium.captureScreenshot()调用该方法以触发实际的屏幕截图。我已经注册了一个JUnit RunListener以在任何测试失败时调用它。
selenium.captureScreenshot()
RunListener
问题是屏幕截图只是 空白文件 -PNG文件完全是黑色的。尺寸为1440x900。
从Eclipse手动运行相同的测试时,屏幕快照可以(尽管它们是整个桌面的屏幕快照,而不是浏览器窗口的屏幕快照,但这是一个不同的故事,是一个小问题)。所以我想问题的原因是Selenium作为Windows服务运行。
当selenium测试中发生异常时,如何截取页面的屏幕截图?
使用的软件:
似乎有一个完全不同的答案。Windows服务(由TanukiSoftware Java Service Wrapper管理)已启动,其wrapper.ntservice.interactive设置为false。将其设置为true有帮助。最终,屏幕截图包含真实的屏幕内容。
wrapper.ntservice.interactive
false
true
wrapper.ntservice.interactive详情请参阅。对包装器代码的分析导致启动Windows服务时设置了[ SERVICE_INTERACTIVE_PROCESS](http://msdn.microsoft.com/zh- cn/library/ms683502 ( VS.85).aspx)标志。
SERVICE_INTERACTIVE_PROCESS