java - 无法实例化类错误消息 - 在 testNG 中

标签 java selenium selenium-webdriver testng

我使用这两个类来执行我的程序。在一个类中,我保留了所有变量,在另一个类中,我保留了要执行的代码。但我无法执行代码。我收到错误消息,指出无法实例化类

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

请帮我解决一下

最佳答案

根本原因是 NullPointerException,如日志中最后几行所示。原因是这一行 -

public static WebDriver driver=null;

您需要创建一个新的 WebDriver 实例并将其分配给变量 driver

关于java - 无法实例化类错误消息 - 在 testNG 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62474952/

相关文章:

java - JGraphX - 如何实时预览和应用更复杂的图形更改

java - 宏运行后,我可以使用Java单击Excel的 "save"按钮吗?

python - 使用 selenium (python) 选择满足条件的所有元素

python - 如何只等待 DOM 加载 Selenium(无图像)

java - 无法从下拉列表中选择选项,导致 ElementNotVisibleException

google-chrome - 在 Google Chrome 中测试 Behat 脚本

Java - 图像识别

java - 运行应用程序时无法实例化 Activity

selenium - 如何处理selenium中的 "Authentication Required"弹出窗口

javascript - 使用数组中的数据在循环中运行 selenium 函数