gpt4 book ai didi

java - Allure 创建屏幕截图 - Selenium

转载 作者:太空宇宙 更新时间:2023-11-04 09:12:43 24 4
gpt4 key购买 nike

我在使用 allure 进行屏幕截图时遇到问题。我已经配置了我的界面,在测试失败的情况下,我调用一个函数,该函数的任务是在报告中创建屏幕截图。然而,这是行不通的。未创建屏幕截图。

下面是我的界面:

package Test;

import Test.resources.Base;
import io.qameta.allure.Allure;
import io.qameta.allure.Attachment;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;

import java.io.ByteArrayInputStream;
import java.io.IOException;

public class ListenersT extends Base implements ITestListener {
Base b = new Base();


public void onFinish(ITestContext arg0) {
// TODO Auto-generated method stub

}


public void onStart(ITestContext arg0) {
// TODO Auto-generated method stub

}

public void onTestFailedButWithinSuccessPercentage(ITestResult arg0) {
// TODO Auto-generated method stub

}



public void onTestFailure(ITestResult result) {
// TODO Auto-generated method stub
//screenshot

try {
b.getScreenshot(result.getName());
} catch (IOException e) {
e.printStackTrace();
}

Object testClass = result.getInstance();
WebDriver driver = ((Base) testClass).getDriver();
if(driver instanceof WebDriver) {
takeScreenshot(driver);
}
}

@Attachment(value = "Page screenshot", type ="image/png")
public byte[] takeScreenshot(WebDriver driver) {
byte[] screenshotAs = ((TakesScreenshot)driver).getScreenshotAs(OutputType.BYTES);
return screenshotAs;
}


public void onTestSkipped(ITestResult arg0) {
// TODO Auto-generated method stub

}

public void onTestStart(ITestResult arg0) {
// TODO Auto-generated method stub

}

public void onTestSuccess(ITestResult arg0) {
// TODO Auto-generated method stub

}


}

这是我的基类形式,它扩展了我的接口(interface):

package Test.resources;

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.Listeners;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URL;
import java.util.Properties;
import java.util.concurrent.TimeUnit;

public class Base {

public static WebDriver driver;


public WebDriver initializeDriver() throws IOException {

Properties prop = new Properties();
FileInputStream fis = new FileInputStream(System.getProperty("user.dir") + "\\src\\main\\java\\Test\\resources\\data.properties");
prop.load(fis);

Properties propBuykers = new Properties();
FileInputStream fisBuykers = new FileInputStream(System.getProperty("user.dir") + "\\src\\main\\java\\Test\\resources\\data.propertiesBuykers");
propBuykers.load(fisBuykers);

String browserName;

if(System.getProperty("browser") == null) {
browserName = "chrome";
}
else {
browserName = System.getProperty("browser");
}


//String browserName = prop.getProperty("browser");

if(browserName.contains("chrome")) {
System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\ChromeDriver\\chromedriver2.exe");
ChromeOptions options = new ChromeOptions();


if(browserName.contains("headless")) {
options.addArguments("headless");
}
driver = new ChromeDriver(options);
}
else if(browserName.equals("firefox")) {
System.setProperty("webdriver.gecko.driver", "C:\\Program Files (x86)\\GeckoDriver\\geckodriver.exe");
driver = new FirefoxDriver();
}
else if(browserName.equals("edge")) {
System.setProperty("webdriver.edge.driver", "C:\\Program Files (x86)\\MicrosoftWebDriver\\msedgedriver.exe");
driver = new EdgeDriver();
}

else if (browserName.equals("remoteBrowser")) {
DesiredCapabilities caps = DesiredCapabilities.chrome();
caps.setCapability("platform", "Windows 10");
caps.setCapability("version", "66.0");

RemoteWebDriver driver = new RemoteWebDriver(new URL("g42664-b435-4a95-9b68-f43b51a43134@ondemand.eu-central-1.saucelabs.com:443/wd/hub"), caps);
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.manage().window().maximize();
return driver;
}

driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.manage().window().maximize();

return driver;
}

public void getScreenshot(String result) throws IOException {
File src = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(src, new File("C://s//"+result+"screenshot.png"));
}

public WebDriver getDriver() {
return driver;
}
}

请帮助我解决我做错的事情。

最佳答案

尝试将文件路径设置为C:\\s\\"+result+"screenshot.png"

它应该是反斜杠而不是正斜杠。

**注意:- 我建议不要使用硬编码路径并获取目录路径。

File f = new File("testPictures.txt");
String absolute = f.getAbsolutePath();

关于java - Allure 创建屏幕截图 - Selenium,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59485961/

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