Я пытаюсь запустить тестовый сценарий Selenium (Java) (в котором есть два метода @Test) параллельно - в браузере Chrome и браузере Firefox. После завершения прогонов я пытаюсь получить отчет об экстентес итогами выполнения.
То, что я наблюдаю на экране: во-первых, запускается Chrome, запускается тестовая ссылка, и мы находимся на странице входа в приложение. Примерно в это же время запускается браузер Firefox.Кроме того, браузер Chrome больше не выполняет никакого выполнения. Браузер Firefox завершает выполнение для первого метода @Test, закрывает браузер, а затем запускает новый браузер Firefox и завершает выполнение второго метода @Test.Chrome, с другой стороны, не показывает активности.
Когда я проверяю результаты, я вижу следующие ошибки -
java.lang.NullPointerException
at testscriptspackage.TestLoginPageFeatures.InvalidCredentials(TestLoginPageFeatures.java:87)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:580)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:716)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:988)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.access$000(SuiteRunner.java:40)
at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:489)
at org.testng.internal.thread.ThreadUtil$1.call(ThreadUtil.java:52)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Я прошел Отчет по экстентам Проблема Параллельное тестирование , Отчет по экстентам не дает должного отчета о параллельном выполнении и нескольких других похожих потоков, но не очень понимает.
Заметил, что если вместо @ BeforeSuite, я использую @До того, как выполнить ClassClass, выполнение Chrome и Firefox происходит должным образом, но проблема заключается в том, что в моем отчете отображаются результаты только для запуска Firefox, поскольку создается новый отчет, перезаписывая предыдущий, созданный для Chrome. Я полагаю, что это проблема сТемы, так что читаю по теме. Тем не менее, так как выполнение работает с @ BeforeClass, я не очень уверен, смотрю ли я в правильном направлении.
У меня есть 4 файла - 1.DriverSetup.java -где я создаю экземпляр объекта WebDriver.2.GuruLoginPage.java - файл страницы для методов и элементов пользовательского интерфейса страницы входа.
TestLoginPageFeatures.java - Тестовый код
protected GuruLoginPage glp;
public ExtentHtmlReporter htmlReporter;
public ExtentReports report;
public ExtentTest logger;
@BeforeSuite
public void setExtent()
{
htmlReporter = new ExtentHtmlReporter(System.getProperty("user.dir") + "/test-output/TestReport.html");
htmlReporter.config().setDocumentTitle("Test Execution Summary");
htmlReporter.config().setReportName("Test Execution Report ");
htmlReporter.config().setTheme(Theme.DARK);
report = new ExtentReports();
report.attachReporter(htmlReporter);
report.setSystemInfo("User Name", "Ahaan");
}
...
@Parameters("Browser")
@BeforeMethod
public void setup(String br)
{
DriverSetup tdriver=new DriverSetup();
driver=tdriver.LaunchURL(br);
glp=new GuruLoginPage(driver);
glp.verifyHomePageLogo();
}
...
@AfterMethod
public void getResult(ITestResult result) throws Exception
{
.....
driver.quit();
}
...
@AfterSuite
public void endReport()
{
report.flush();
}
TestNG.xml -
<suite name="My Test Suite" parallel="tests" thread-count="2">
<test name="Guru Bank Tests - Chrome">
<parameter name="Browser" value="chrome"/>
<classes>
<class name="testscriptspackage.TestLoginPageFeatures"/>
</classes>
</test>
<test name="Guru Bank Tests - Firefox">
<parameter name="Browser" value="firefox"/>
<classes>
<class name="testscriptspackage.TestLoginPageFeatures"/>
</classes>
</test>
</suite>
Оцените какие-либо предложения о том, что мне нужно изменить, чтобы заставить его работать?Кроме того, можем ли мы добавить данные в отчет Extent в версии 4 отчета Extent? Не могу найти ни одного примера кода для этого. Наконец, я новичок в Selenium, поэтому любые другие предложения по организации кода также приветствуются.Спасибо.