首页 > 解决方案 > 如何将诱惑报告中的屏幕截图与 webdriverIO 集成

问题描述

我正在尝试在测试中的每个步骤之后在我的魅力报告中生成屏幕截图,或者在测试结束时仅生成一个屏幕截图。我已经参考了 webdriverIO 文档,看来我应该将afterStep函数与.takeScreenshot方法一起使用。我已经在我的配置文件中尝试过,但没有截屏这是我的 afterStep 函数:

afterStep: function (test, scenario, { error, duration, passed }) {
 if (!error) {
     browser.takeScreenshot() } }

我最接近我想要的结果是使用这个

 afterTest: function (test, scenario, { error, duration, passed }) { 
if (!error) { 
    browser.saveScreenshot('test.png') } }

它的作用是在测试结束时截取屏幕截图并将其存储在我的根目录中, 在此处输入图像描述

然而,图像无法显示在 Allure 报告中 在此处输入图像描述 如何附加要在 Allure 报告中显示的屏幕截图?

标签: seleniumtestingwebdriver-ioqaallure

解决方案


在对我的代码进行了大量审查之后,我意识到我在这里做错了一件事。

我的配置文件中有另一个afterTest钩子,它被调用而不是捕获屏幕截图的钩子。为了解决这个问题,我browser.takeScreenshot()对原始afterTest钩子使用了一个函数,这解决了我的问题。截图附在魅力报告的末尾。

browser.saveScreenshot将屏幕截图保存到您的本地文件夹,同时browser.takeScreenshot将其附加到魅力报告中。

我的全afterTest

afterTest: async function (test, context, { error, result, duration, passed, retries }) {
        if(passed) {
          await browser.takeScreenshot();
          browser.executeScript('browserstack_executor: {"action": "setSessionStatus", "arguments": {"status":"passed","reason": "Assertions passed"}}');
        } else {
          browser.executeScript('browserstack_executor: {"action": "setSessionStatus", "arguments": {"status":"failed","reason": "At least 1 assertion failed"}}');
        }
      },

在此处输入图像描述


推荐阅读