gpt4 book ai didi

maven - Selenium Webdriver/TestNG/Maven/Xvfb - 在失败时截取屏幕截图?

转载 作者:行者123 更新时间:2023-12-04 04:47:20 28 4
gpt4 key购买 nike

想问问您在此类项目中失败时截取屏幕截图的最佳方法吗?
我应该在 Selenium 代码中执行,还是在 Maven 项目中通过某些命令或使用 Xvfb 执行此操作?
我通过 Xvfb 使用 Firefox Headless。

我在互联网上看到了一些截图的类(class),但我在这里错过了大局。
这个类怎么知道什么时候截屏?
Jenkins如何告诉java测试代码失败了,所以会拍照?
我应该在测试代码中的哪个位置引用截屏类?
我应该在整个测试中使用 try catch 吗?
是否有一个 Jenkins 插件可以在失败时自动保存屏幕截图?

最佳答案

我刚刚找到了一篇文章,解释了一种更好的方法:http://darrellgrainger.blogspot.com/2011/02/generating-screen-capture-on-exception.html

它是如何工作的?
实际上,您传入了一个自定义 WebDriverEventListener,它具有将在某些事件上调用的函数。这些事件之一是 onException()。所以每次WebDriver抛出异常时,都可以编写代码进行截图。

我见过三种不同的方法来做到这一点:

  • 如果您有静态驱动程序,最简单的方法是在 TestNG 中设置监听器(覆盖 TestListenerAdapter ),然后在 onTestFailure() 方法中截取屏幕截图。
  • 我个人的方法是使用Selenium Page Object模式,但稍微修改了一下。我创建了一个 EnhancedWebElement 对象,它包装和扩展了一个普通的 WebElement,并且有一个对驱动程序的引用。然后在 WebElement 具有的每个方法中,我在 try/catch 和 catch 中执行调用,然后我截取屏幕截图。我愿意分享代码,但我必须剪掉很多才能在这里发布,所以如果你想看到它,请告诉我。
  • 或者,您可以围绕 WebElement 或驱动程序本身设置一个代理并让它捕获所有内容。我还没有这样做,但我已经看到它在其他项目中起作用。
  • 关于maven - Selenium Webdriver/TestNG/Maven/Xvfb - 在失败时截取屏幕截图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17989363/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com