Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以在“范围报告”等步骤之间提供诱惑报告的屏幕截图?_Java_Selenium_Selenium Webdriver_Allure_Selenium Extent Report - Fatal编程技术网

Java 是否可以在“范围报告”等步骤之间提供诱惑报告的屏幕截图?

Java 是否可以在“范围报告”等步骤之间提供诱惑报告的屏幕截图?,java,selenium,selenium-webdriver,allure,selenium-extent-report,Java,Selenium,Selenium Webdriver,Allure,Selenium Extent Report,我正在使用诱惑报告为我的测试生成报告。早些时候,我使用范围报告。正如您所知,在扩展报告中,您可以按创建日志和屏幕截图的顺序添加日志和屏幕截图,但在诱惑报告中,所有屏幕截图都将显示在步骤的末尾 我的问题:是否可以在步骤之间显示屏幕截图?我想在每个步骤后创建一个屏幕截图,我想在正确的位置看到它们,而不是在报告末尾看到它们。 感谢您的帮助:)您可以通过在以下步骤中截图来调用方法: @Test(description = "Screenshot in Step") public void screens

我正在使用诱惑报告为我的测试生成报告。早些时候,我使用范围报告。正如您所知,在扩展报告中,您可以按创建日志和屏幕截图的顺序添加日志和屏幕截图,但在诱惑报告中,所有屏幕截图都将显示在步骤的末尾

我的问题:是否可以在步骤之间显示屏幕截图?我想在每个步骤后创建一个屏幕截图,我想在正确的位置看到它们,而不是在报告末尾看到它们。
感谢您的帮助:)

您可以通过在以下步骤中截图来调用方法:

@Test(description = "Screenshot in Step")
public void screenshotInStepTest() {
    driver.get("https://www.google.com");
    step1();
    step2();
    step3();
}

@Step("Step 1")
public void step1(){
    System.out.println("step 1");
}
@Step("Step 2 with screenshot")
public void step2(){
    System.out.println("step 2");
    screenshot();
}
@Step("Step 3")
public void step3(){
    System.out.println("step 3");
}

@Attachment(value = "Screenshot", type = "image/png")
public byte[] screenshot() {
    return ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
}
更新:

import java.io.ByteArrayInputStream;
//...
@Step("Step 1")
public void step1(){
    //...

    Allure.addAttachment("Any text", new ByteArrayInputStream(((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES)));
}
报告:

您可以在步骤中通过截图调用方法:

@Test(description = "Screenshot in Step")
public void screenshotInStepTest() {
    driver.get("https://www.google.com");
    step1();
    step2();
    step3();
}

@Step("Step 1")
public void step1(){
    System.out.println("step 1");
}
@Step("Step 2 with screenshot")
public void step2(){
    System.out.println("step 2");
    screenshot();
}
@Step("Step 3")
public void step3(){
    System.out.println("step 3");
}

@Attachment(value = "Screenshot", type = "image/png")
public byte[] screenshot() {
    return ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
}
更新:

import java.io.ByteArrayInputStream;
//...
@Step("Step 1")
public void step1(){
    //...

    Allure.addAttachment("Any text", new ByteArrayInputStream(((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES)));
}
报告:

感谢您的回复。但是如果我在一个方法中有一些步骤,屏幕截图将出现在最后。正确的?我给这个问题附加了另一张图片。所有包含
screenshot()
方法的
@Step
都会有一个屏幕截图。将
screenshot()
方法添加到
检查登录是否成功
,您将获得所需的屏幕截图。但是在方法内部不可能有
Allure.step(“某物”)
。对吗?您可以使用
Allure.addAttachment()
,检查答案更新我也测试了这个方法。更改附加的文件名有助于更轻松地找到它。但它仍然出现在最后,而不是它必须出现的地方。谢谢你的回复。但是如果我在一个方法中有一些步骤,屏幕截图将出现在最后。正确的?我给这个问题附加了另一张图片。所有包含
screenshot()
方法的
@Step
都会有一个屏幕截图。将
screenshot()
方法添加到
检查登录是否成功
,您将获得所需的屏幕截图。但是在方法内部不可能有
Allure.step(“某物”)
。对吗?您可以使用
Allure.addAttachment()
,检查答案更新我也测试了这个方法。更改附加的文件名有助于更轻松地找到它。但它仍然出现在最后,而不是必须出现的地方。