Отчет Об Экстенте Параллельного Многоброузерного Тестирования В TestNG

#multithreading #testng #extentreports

Вопрос:

Я использую TestNG для выполнения параллельного теста для кросс-браузера, где я пытаюсь расширить отчет для параллельного теста, в котором есть параметры для отправки имени браузера. Но мой код генерирует два отдельных отчета о тестировании для двух браузеров. Могу ли я как-нибудь составить отчет в одном файле? Заранее спасибо.

Мой файл кода Селена

 enter code here
package demo_testng;

import java.io.IOException;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
 import org.openqa.selenium.JavascriptExecutor;
 import org.openqa.selenium.NoSuchElementException;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.chrome.ChromeDriver;
 import org.openqa.selenium.firefox.FirefoxDriver;
 import org.openqa.selenium.ie.InternetExplorerDriver;
 import org.testng.Assert;
  import org.testng.annotations.AfterClass;
  import org.testng.annotations.AfterMethod;
  import org.testng.annotations.AfterSuite;
  import org.testng.annotations.AfterTest;
  import org.testng.annotations.BeforeClass;
  import org.testng.annotations.BeforeSuite;
   import org.testng.annotations.BeforeTest;
  import org.testng.annotations.Parameters;
  import org.testng.annotations.Test;

 import com.relevantcodes.extentreports.ExtentReports;
 import com.relevantcodes.extentreports.ExtentTest;
 import com.relevantcodes.extentreports.LogStatus;

  import demo_testng.Screenshots;
  import org.testng.ITestResu<

public class SeleniumLoginTest {

private WebDriver driver;
private String baseUrl;
ExtentReports report;
ExtentTest test;



@BeforeTest
@Parameters({"browser"})
public void beforeClass(String browser) {
    baseUrl = "*******";
    if (browser.equalsIgnoreCase("Chrome")) {
        
        driver = new ChromeDriver();
        report = new ExtentReports("C:\Users\DELL\Documents\selnium_java\demo_testng\New folder\logintestFirefox.html");
        test = report.startTest("Verify NavLinks Firefox");
    
        test.log(LogStatus.INFO, " Browser Started...");
    } else if (browser.equalsIgnoreCase("firefox")) {
        
        driver = new FirefoxDriver();
        
        report = new ExtentReports("C:\Users\DELL\Documents\selnium_java\demo_testng\New folder\logintestchrome.html");
        test = report.startTest("Verify NavLinks chrome");
        test.log(LogStatus.INFO, " Browser Started...");
    }
    
    
    //driver = new FirefoxDriver();
    

    // Maximize the browser's window
    driver.manage().window().maximize();
    test.log(LogStatus.INFO, "Browser Maximized");
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    driver.get(baseUrl);
    test.log(LogStatus.INFO, "Web application opened");
}

@Test
public void test1_validLoginTest() throws Exception {
    JavascriptExecutor js = (JavascriptExecutor)driver;
    driver.get(baseUrl);
    test.log(LogStatus.INFO, "Web application opened");
    
    
    WebElement header= driver.findElement(By.cssSelector("#om"));
     
     int i = header.findElements(By.cssSelector("li a")).size();
     System.out.println(i);//Get number of links
     test.log(LogStatus.INFO, "getting all the links");
     for(int j = 0;j<i;j  ){    //create loop based upon number of links to traverse all links
           //header= driver.findElement(By.cssSelector("#om li"));   // We are re-creating "footer" webelement as DOM changes after navigate.back()
              WebElement nav= driver.findElements(By.cssSelector("#om li a")).get(j);   // We are re-creating "footer" webelement as DOM changes after navigate.back()
               //WebElement elem =nav.findElements(By.tagName("a")).get(j);
               js.executeScript("arguments[0].click();", nav);
               
                  Thread.sleep(1000);
               System.out.println(driver.getTitle());
               if(driver.getTitle().contains("404")) {
                   Assert.assertFalse(driver.getTitle().contains("404"));
                   
                   
                   String link=driver.getCurrentUrl();
                   
                   test.log(LogStatus.FAIL, "Link  Accesible:" link);
                   
                  }
               else {
                   String link2=driver.getCurrentUrl();
                   test.log(LogStatus.PASS, "Link  Accesible:" link2);
               }
               }
}


    

@AfterTest
public void afterClass() {
    report.endTest(test);
    report.flush();
    driver.quit();
    
    
}
 

Класс отчета об экстенте

 enter code here
package demo_testng;

 import com.relevantcodes.extentreports.ExtentReports;

  public class ExtentFactory {
 public static ExtentReports getInstance() {
    ExtentReports extent;
    String Path = "C:\Users\DELL\Documents\selnium_java\demo_testng\New 
    folder\logintestFirefox.html";
    extent = new ExtentReports(Path, false);
    extent
     .addSystemInfo("Selenium Version", "2.52");
     

    return extent;
}
}
 

XML-файл, который я использовал:

 enter code here
 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
 <suite name="Parallel TestSuite" parallel="tests" thread-count="2">
  <test name="Firefox Test">
  <parameter name="browser" value="firefox"></parameter>
  <classes>
    <class name="demo_testng.SeleniumLoginTest"></class>
   </classes>
  </test>
 <test name="Chrome Test">
 <parameter name="browser" value="chrome"></parameter>
  <classes>
    <class name="demo_testng.SeleniumLoginTest"></class>
  </classes>
  </test>
  </suite>