如何解决尝试打开范围报告 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 文件时,看看下面发生了什么:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。