首页 > 解决方案 > 如何在硒中每10秒截屏一次?

问题描述

从 TC 开始到 TC 结束,如何在 selenium 中每 10 秒截取一次屏幕截图。

假设我的 TC 持续时间是 100 秒,我总共需要 10 个屏幕截图。

标签: javaseleniumselenium-webdriver

解决方案


Selenium 是单线程的,因此您无法实现这一点。任何请求都必须等待前一个请求完成。

如果您只有一个进程,即使您在每个命令后检查是否经过了 10 秒,它也永远不会正好是 10 秒,因为很可能在确切的时刻正在处理命令。你最终会得到不等周期的屏幕截图。

即使您有 2 个进程正在运行;1 执行测试命令,其他执行屏幕截图正好 10 秒,你仍然会遇到同样的问题。

由于 Selenium 是单线程的,因此在任何并发命令完成执行之前,它不会处理对屏幕截图的请求。同样,您最终会在屏幕截图之间出现不相等的周期。

如果您迫切需要每 10 秒截屏一次,那么您可以考虑使用“GridExtras”(https://github.com/groupon/Selenium-Grid-Extras)。这会暴露一个 HTTP 端点以在 Selenium 之外截取屏幕截图,如果您有 2 个进程,则第二个进程可以每 10 秒调用一次该端点。

不要因为它被称为“ Grid Extras”而被推迟。我个人使用它来捕获视频而不使用 Selenium Grid,而是我有一个独立的 selenium 服务器与 Grid Extras 的实例一起运行。


推荐阅读