微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试打开范围报告 html 文件时出现 404 错误

如何解决尝试打开范围报告 html 文件时出现 404 错误

我正在尝试获取一个简单的范围报告以用于我的 Selenium 测试。 我可以成功运行我的测试,并且生成了范围报告 html 文件,但是当我尝试打开它时出现 404 错误

目前出于学习目的,我只是通过我的 testng.xml 文件运行 checkPageTitle 方法

package wade.selenium;

import PageObjects.HomePage;
import com.aventstack.extentreports.ExtentReports;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.webdriverwait;
import org.testng.Assert;
import org.testng.annotations.*;
import org.testng.asserts.softAssert;

import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;

public class HomePageTest extends BaseTest {

    public WebDriver driver;
    webdriverwait w;
    private Logger l;
    ExtentReports extent;

    @BeforeTest
    @Parameters("browser")
    public void intializeTest(String browser) throws InterruptedException {
        l = LogManager.getLogger(HomePageTest.class.getName());
        driver = initializeDriver(browser);
        l.debug("Creating an explicit wait object");
        w = new webdriverwait(driver,10);
    }

    @test()
    public void checkPageTitle() {
        Assert.assertEquals(driver.getTitle(),"Takealot.com: Online Shopping | SA's leading online store");
    }

    @Test(enabled = false)
    public void checkAllLinks() throws InterruptedException {
        l.debug("Creating a TestNg soft assert object");
        SoftAssert a = new SoftAssert();
        l.debug("Retrieving HomePage object");
        HomePage homePage = new HomePage(driver);
        List<WebElement> allLinks = homePage.getAllLinks();
        int index = -1;
        for (WebElement link : allLinks) {
            index++;
            l.trace("Testing link " + (link.getText().equals("") ? link.getAttribute("href") : link.getText()));
            try {
                HttpURLConnection conn = (HttpURLConnection) new URL(link.getAttribute("href")).openConnection();
                conn.setConnectTimeout(5000);
                conn.connect();
                int responseCode = conn.getResponseCode();
                if (responseCode >= 400) {
                    l.error("Link with text " + link.getText()  + " with URL " + link.getAttribute("href")  + "is broken,response code = " + responseCode);
                }
                a.assertTrue(responseCode < 400);

            } catch (Exception e) {
                l.error("Link with text " + link.getText() + " at index " + index + "threw an exception: " + e.getMessage());
                a.assertTrue(false,"A link test threw an exception");
            }
        }
        a.assertAll();
    }

    @AfterMethod
    public void returnToLandingPage() {
        returnToLandingPage(driver);
    }

    @AfterTest
    public void teardown() {
        l.info("Quitting driver");
        driver.quit();
    }
}

我的 ExtentReports 对象是通过我的 ExtentReporterTool 类创建的:

package Tools;

import com.aventstack.extentreports.ExtentReports;
import com.aventstack.extentreports.reporter.ExtentSparkReporter;

public class ExtentReporterTool {

    static ExtentReports extent;

    public static ExtentReports getReportObject(){
        String path = System.getProperty("user.dir") + "\\src\\Logs\\Extent_Report.html";
        ExtentSparkReporter reporter = new ExtentSparkReporter(path);
        reporter.config().setReportName("Automated Test Results");
        reporter.config().setDocumentTitle("Test Results");
        extent=new ExtentReports();
        extent.attachReporter(reporter);
        extent.setSystemInfo("Tester","Wade Profe");
        return extent;
    }
}

我正在我的 testng Listeners 类中实现报告:

package wade.selenium;

import Tools.ExtentReporterTool;
import com.aventstack.extentreports.ExtentReports;
import com.aventstack.extentreports.ExtentTest;
import com.aventstack.extentreports.Status;
import org.apache.commons.io.FileUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
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.File;
import java.io.IOException;
import java.util.Calendar;

public class Listeners implements ITestListener {

    Logger l = LogManager.getLogger(Listeners.class.getName());
    ExtentReports extent = ExtentReporterTool.getReportObject();
    ExtentTest test;

    @Override
    public void onTestStart(ITestResult result) {
        l.info("Starting test: " + result.getName() + " from " + result.getTestClass().getRealClass().getSimpleName());
        test = extent.createTest(result.getmethod().getmethodName());
    }

    @Override
    public void onTestSuccess(ITestResult result) {
        l.info("Test " + result.getName() + " successfully executed in " + (result.getEndMillis() - result.getStartMillis()) + " milliseconds");
        test.log(Status.PASS,result.getName() + " Passed");
    }

    @Override
    public void onTestFailure(ITestResult result) {
        test.fail(result.getThrowable());
        l.fatal("Test " + result.getName() + " Failed: " + result.getThrowable());
        WebDriver driver = null;
        try {
            driver = (WebDriver) result.getTestClass().getRealClass().getDeclaredField("driver").get(result.getInstance());
        } catch (illegalaccessexception | NoSuchFieldException e) {
            l.fatal(e.getMessage());
        }
        l.trace("Creating a screenshot of the error page");
        File src = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
        try {
            FileUtils.copyFile(src,new File(System.getProperty("user.dir") + "\\src\\Logs\\Screenshots\\" +
                    result.getName() + " failure - [" + Calendar.getInstance().getTime().toString().replace(":","-") + "]" + ".png"));
        } catch (IOException e) {
            l.fatal(e.getMessage());
        }
    }

    @Override
    public void onTestSkipped(ITestResult result) {
        l.info("Skipping " + result.getName());

    }

    @Override
    public void onTestFailedButWithinSuccesspercentage(ITestResult result) {

    }

    @Override
    public void onTestFailedWithTimeout(ITestResult result) {

    }

    @Override
    public void onStart(ITestContext context) {

    }

    @Override
    public void onFinish(ITestContext context) {
        extent.flush();
    }
}

当我尝试打开我的 html 文件时,看看下面发生了什么:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。