Не удается создать экземпляр сообщения об ошибке класса - в testNG - PullRequest
0 голосов
/ 19 июня 2020

Я использовал эти два класса для выполнения своей программы. В одном классе я сохранил все свои переменные, в другом - код для выполнения. Но я не могу выполнить код. Я получаю сообщение об ошибке, в котором говорится, что не удается создать экземпляр класса

package BalajiSanthanamAcademy.MavenJava;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;


public class CommonVariableTest {

    public static WebDriver driver=null;


        public String key="webdriver.chrome.driver";
        public String path="C:\\Program Files\\Java\\chromedriver_win32\\chromedriver.exe";
        public String baseUrl = "https://www.expedia.co.in/";
        public String expUrl = "https://www.expedia.co.in/";
        public String Yatra = "https://www.yatra.com/";
        public String expYatra = "https://www.yatra.com/";
        //yatra search
        WebElement departFrom =driver.findElement(By.xpath("//input[@id='BE_flight_origin_city']"));

        //Flying From class variables
        public String Depature = "CJB";
        public String goingTo = "MAA";


        //Flying To class variables


        //Declaring departure and return date
        public String departureDate = "07/22/2020";
        public String returnDate = "10/15/2020";

}

, а класс ниже - это тот, который я использовал для выполнения

package BalajiSanthanamAcademy.MavenJava;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.util.concurrent.TimeUnit;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class YatraLoginTest extends CommonVariableTest {

    WebDriver driver;
     @BeforeClass
        public void setup()
        {
        System.setProperty(key,path);
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.manage().deleteAllCookies();
         driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);

        }

       @Test (priority=1)
        public void setBaseURL()
        {
           driver.get(Yatra);
           System.out.println(driver.getCurrentUrl());
           try{
               Assert.assertEquals(expYatra, driver.getCurrentUrl());
               System.out.println("Navigated to correct webpage");
             }
             catch(Throwable pageNavigationError)
            {
               System.out.println("Didn't navigate to correct webpage");
             }



        }
       @Test (priority=2)
       public void Login() throws InterruptedException
       {
           driver.findElement(By.cssSelector("body.wrapper-snipe.wrapper-toucan.tenantwrapper-dom.catwrapper-home:nth-child(2) div.theme-snipe:nth-child(2) div.yatra-header.headerGrp div.wrapper div.header-container.desktop-only div.header-right-menu.menu.ftL div.settings ul.justified-menu.desktop-navs.settings-content.responsivetabshow li.list-dropdown:nth-child(1) > a.dropdown-toggle")).click();
           driver.findElement(By.cssSelector("#signInBtn")).click();
           WebDriverWait w =new WebDriverWait(driver,10);
            w.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@id='login-input']")));
            driver.findElement(By.xpath("//input[@id='login-input']")).click();
            driver.findElement(By.xpath("//input[@id='login-input']")).sendKeys("balajimscit09@gmail.com");
            Thread.sleep(2000L);
            driver.findElement(By.cssSelector("#login-continue-btn")).click();
             WebDriverWait x =new WebDriverWait(driver,10);
            x.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#login-password")));
            driver.findElement(By.cssSelector("#login-password")).click();
            driver.findElement(By.cssSelector("#login-password")).sendKeys("Welcome-1");
            driver.findElement(By.cssSelector("#login-submit-btn")).click();

       }
       @Test (priority=3)
       public void HomepageValidation() throws InterruptedException
       {
           WebDriverWait Y =new WebDriverWait(driver,15);
            Y.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[@class='dropdown-toggle loginUserName']")));
            String Wel = driver.findElement(By.xpath("//a[@class='dropdown-toggle loginUserName']")).getText();
            Assert.assertEquals(Wel,"Hi Balaji");
            System.out.println(Wel+" = Login details Sucessfully validated");      
       }
       @Test (priority=4)
       public void yatraSearch() throws InterruptedException
       {
           //Round trip tab
           driver.findElement(By.xpath("//a[@class='blur_class']")).click();
           Thread.sleep(3000L);
           //Depart from
           departFrom.click();
           Thread.sleep(3000L);
           departFrom.sendKeys("CJB");
           Thread.sleep(3000L);
           departFrom.sendKeys(Keys.ENTER);
           Thread.sleep(3000L);
           departFrom.getAttribute("value");



           //Going To
           WebElement goinTo =driver.findElement(By.xpath("//input[@id='BE_flight_arrival_city']"));
           Thread.sleep(3000L);
           goinTo.sendKeys(goingTo);
           Thread.sleep(3000L);
           goinTo.sendKeys(Keys.ENTER);


           driver.findElement(By.cssSelector("#BE_flight_origin_date")).click();
           Thread.sleep(3000L);

           WebElement element = driver.findElement(By.xpath("/html[1]/body[1]/div[2]/div[1]/section[1]/div[1]/div[1]/div[1]/section[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/ul[1]/li[2]/ul[1]/li[1]/section[1]/div[1]/div[2]/div[2]/div[2]/div[1]/div[1]/div[1]/table[1]/tbody[1]/tr[2]/td[4]"));
           Actions actions = new Actions(driver);
           actions.moveToElement(element).click().build().perform();



           Thread.sleep(3000L);
           WebElement element1 = driver.findElement(By.xpath("//div[@class='month-box BE_flight_arrival_date']//div[1]//table[1]//tbody[1]//tr[2]//td[7]"));
           Actions actions1 = new Actions(driver);
           actions1.moveToElement(element1).click().build().perform();


           driver.findElement(By.xpath("//span[@class='txt-ellipses flight_passengerBox travellerPaxBox']")).click();
           for(int i=0;i<2;i++)
           {
           driver.findElement(By.xpath("//div[@class='iePasenger dflex']//div[1]//div[1]//div[1]//span[2]")).click();
           driver.findElement(By.xpath("//div[@class='vertical_search_engine']//div[2]//div[1]//div[1]//span[2]")).click();
           }
           driver.findElement(By.cssSelector("#BE_flight_flsearch_btn")).click();
       }
       @Test (priority=5)
       public void SearchValid() throws InterruptedException
       {
           System.out.println(driver.findElement(By.xpath("//input[@placeholder='Select Origin']")).getAttribute("value"));
           System.out.println(driver.findElement(By.xpath("//input[@placeholder='Select Destination']")).getAttribute("value"));
           System.out.println(driver.findElement(By.xpath("//input[@placeholder='Depart']")).getAttribute("value"));
           System.out.println(driver.findElement(By.xpath("//input[@placeholder='Return']")).getAttribute("value"));

           System.out.println(driver.findElement(By.xpath("//body/section[@id='flightSRP']/section/div/div/form[@id='modifySearch']/ul/li[5]/div[1]")).getAttribute("value"));
           driver.findElement(By.xpath("//div[contains(@class,'result-set pr grid')]//div[2]//div[1]//div[1]//div[1]//div[4]//div[1]//div[1]//div[1]//label[1]//div[2]//i[1]")).getText();

           driver.findElement(By.xpath("//section[@id='Flight-APP']//section//section//div//div//div//button")).click();
       }




}

Я получаю следующее сообщение об ошибке.

[RemoteTestNG] detected TestNG version 7.0.1
org.testng.TestNGException: 
Cannot instantiate class BalajiSanthanamAcademy.MavenJava.YatraLoginTest
    at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:30)
    at org.testng.internal.InstanceCreator.instantiateUsingDefaultConstructor(InstanceCreator.java:193)
    at org.testng.internal.InstanceCreator.createInstanceUsingObjectFactory(InstanceCreator.java:113)
    at org.testng.internal.InstanceCreator.createInstance(InstanceCreator.java:79)
    at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:109)
    at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:167)
    at org.testng.TestClass.getInstances(TestClass.java:102)
    at org.testng.TestClass.initTestClassesAndInstances(TestClass.java:82)
    at org.testng.TestClass.init(TestClass.java:74)
    at org.testng.TestClass.<init>(TestClass.java:39)
    at org.testng.TestRunner.initMethods(TestRunner.java:459)
    at org.testng.TestRunner.init(TestRunner.java:338)
    at org.testng.TestRunner.init(TestRunner.java:291)
    at org.testng.TestRunner.<init>(TestRunner.java:222)
    at org.testng.remote.support.RemoteTestNG6_12$1.newTestRunner(RemoteTestNG6_12.java:33)
    at org.testng.remote.support.RemoteTestNG6_12$DelegatingTestRunnerFactory.newTestRunner(RemoteTestNG6_12.java:66)
    at org.testng.ITestRunnerFactory.newTestRunner(ITestRunnerFactory.java:55)
    at org.testng.SuiteRunner$ProxyTestRunnerFactory.newTestRunner(SuiteRunner.java:676)
    at org.testng.SuiteRunner.init(SuiteRunner.java:178)
    at org.testng.SuiteRunner.<init>(SuiteRunner.java:112)
    at org.testng.TestNG.createSuiteRunner(TestNG.java:1275)
    at org.testng.TestNG.createSuiteRunners(TestNG.java:1251)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1100)
    at org.testng.TestNG.runSuites(TestNG.java:1039)
    at org.testng.TestNG.run(TestNG.java:1007)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
    at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:23)
    ... 27 more
Caused by: java.lang.NullPointerException
    at BalajiSanthanamAcademy.MavenJava.CommonVariableTest.<init>(CommonVariableTest.java:20)
    at BalajiSanthanamAcademy.MavenJava.YatraLoginTest.<init>(YatraLoginTest.java:19)
    ... 33 more

Не могли бы вы помочь мне, как решить

Ответы [ 3 ]

0 голосов
/ 20 июня 2020

Nullpointexception здесь показано, что это означает, что URL-адрес запущен, но экземпляр драйвера не создан для взаимодействия, поэтому изначально вы определили драйвер драйвера как null

0 голосов
/ 20 июня 2020

Спасибо за координацию. Я наконец нашел ответ. Ошибка в том, что я поместил веб-элемент в класс CommonVariableTest и попытался получить доступ к WebElement из класса YatraLoginTest. Следовательно, было выдано сообщение об ошибке. когда я удалил WebElement, он работает нормально.

0 голосов
/ 19 июня 2020

Причина Root - NullPointerException, как показано в последних нескольких строках ваших журналов. Причина в этой строке -

public static WebDriver driver=null;

Вам необходимо создать новый экземпляр WebDriver и назначить его переменной driver

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...