【问题标题】:Taking Screenshots using Selenium Web Driver使用 Selenium Web 驱动程序截屏
【发布时间】:2013-09-27 12:04:09
【问题描述】:

如何使用 Selenium Web Driver 截屏? 我正在使用具有 2 个节点的网格配置。我需要在每个定义的时间间隔从两个节点截屏。

请不要指定截屏方式。我希望测试用例不要每次都调用一个常用方法来截屏。相反,另一个线程应该始终处于活动状态,可以每隔一段时间截取屏幕截图。

【问题讨论】:

    标签: webdriver testng selenium-grid2


    【解决方案1】:

    您必须有多个线程,并将驱动程序实例传递给它们,一个线程将执行测试,而另一个线程将坐在计时器上,每 X 秒截屏一次。

    我不建议这样做,但原因如下:

    1. 这可能会引发很多错误。如果您在驱动程序启动或进入页面时尝试截屏会发生什么?它甚至可能无法在做简单的事情时截屏。

    2. 除非您打算每半秒截一张屏幕截图并将其放入视频中(这会减慢您的测试速度),否则大多数屏幕截图都没有用,而且在大量截取的屏幕截图中很难找到有用的。

    3. 如果您想包含另一个驱动程序,您还必须将其传递给线程,获取第三个屏幕截图。

    所以,总而言之,我要问您为什么要这样做...因为我很乐意提出一个仍能满足您需求的替代解决方案。

    【讨论】:

    • 实际上测试用例是通宵运行的。只有失败的测试用例才会截图。但是有些测试用例仍然需要稍后检查才能确切知道当时发生了什么。如果某些事情失败了,或者即使某些测试用例做了一些工作,我可能需要查看它的流程。所以我需要它。
    • 仅供参考,如果您看过 SauceLab 框架,它会为收到的每个请求截取屏幕截图。这怎么可能?有没有办法在集线器或节点上进行配置,以便对每个请求进行截图??
    • 我发现一个简单的失败截图是我正确调试发生的事情所需要的。在少数情况下这不是真的,但我可以手动添加一些屏幕截图并再次运行它。
    • 没关系,但我仍然需要每隔一段时间截图。你能看一下saucelab的网站吗?我相信你会明白我在说什么。 link
    • 我没有见过 saucelab...我不知道他们是如何实现的...但是如果我要尝试为每个操作截取屏幕截图,我会在驱动程序周围创建一个包装器/webelements 然后会对 webelements 的每个操作进行截图。但是...这是一种设计选择...而且您必须自己实现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-28
    • 1970-01-01
    相关资源
    最近更新 更多