无法在TestNG中初始化类,也找不到原因

我试图自动搜索expedia网站。如果我在selenium java版本中运行相同的代码,则效果很好。但是在TestNG模式下。我收到错误消息。

package testNGbasics;
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.chrome.ChromeDriverService;
import java.util.concurrent.TimeUnit;

import org.testng.annotations.Test;

public class Expediaassignment {
    public String baseUrl = "https://www.expedia.com/";
    public WebDriver driver;

    //Flying From class variables
    public WebElement flyingfrom = driver.findElement(By.xpath("//input[@id='flight-origin-hp-flight']"));
    public String DepatureFrom = "Mumbai";
    public String FF = flyingfrom.getattribute("value");

    //Flying To class variables
    public WebElement flyingTo = driver.findElement(By.xpath("//input[@id='flight-destination-hp-flight']"));
    public String DD = flyingTo.getattribute("value");

    //Declaring departure and return date
    public String departureDate = "22/06/2020";
    public String returnDate = "21/08/2020";


    @Test
    public void setBaseURL()
    {

        System.setProperty("webdriver.chrome.driver","C:\\Program Files\\Java\\chromedriver_win32\\chromedriver.exe");
        System.setProperty(ChromeDriverService.CHROME_DRIVER_SILENT_OUTPUT_PROPERTY,"True");
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.manage().deleteAllCookies();
        driver.manage().timeouts().pageLoadTimeout(60,TimeUnit.SECONDS);
        //Navigating to expedia website
        driver.get(baseUrl);
        System.out.println(driver.getcurrentUrl());

    }
    @Test
    public void closepopup()
    {
        driver.findElement(By.xpath("//button[@id='travel-advisory-close-button']//span[1]")).click();
    }

    @Test
    public void FlyingFrom() throws InterruptedException
    {
        flyingfrom.click();
        flyingfrom.sendKeys(DepatureFrom);
        Thread.sleep(2000);
        flyingfrom.sendKeys(Keys.ARROW_DOWN);
        Thread.sleep(2000);
        flyingfrom.sendKeys(Keys.ENTER);
        System.out.println("Your departure is"+FF);
    }

    @Test
    public void FlyingTo() throws InterruptedException

    {
        flyingTo.click();
        Thread.sleep(2000);
        flyingTo.sendKeys("MAA");
        Thread.sleep(2000);
        flyingTo.sendKeys(Keys.ARROW_DOWN);
        Thread.sleep(2000);
        flyingTo.sendKeys(Keys.ENTER);
        System.out.println("Your destination is"+DD);
    }

    @Test
    public void departureDate() throws InterruptedException
    {
        WebElement DepartureDate = driver.findElement(By.xpath("//input[@id='flight-departing-hp-flight']"));
        DepartureDate.click();
        DepartureDate.sendKeys(departureDate);
        //Thread.sleep(2000);
        //driver.findElement(By.xpath("//*[@id=\"flight-departing-wrapper-hp-flight\"]/div/div/div[2]/table/tbody/tr[3]/td[3]/button")).click();
         String DepartDate =DepartureDate.getattribute("value");
        System.out.println("Your depature date is"+DepartDate);

    }


    @Test
    public void returnDate() throws InterruptedException
    {
        WebElement ReturnDate = driver.findElement(By.xpath("//input[@id='flight-returning-hp-flight']"));
        ReturnDate.click();
        ReturnDate.sendKeys(returnDate);
        //Thread.sleep(2000);
        String ReturDate =ReturnDate.getattribute("value");
        System.out.println("Your Return date is"+ReturDate);

    }
}

我收到以下错误消息

[RemoteTestNG] detected TestNG version 7.0.1
org.testng.TestNGException: 
Cannot instantiate class testNGbasics.Expediaassignment
    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 testNGbasics.Expediaassignment.<init>(Expediaassignment.java:17)
    ... 33 more

出了什么问题。以及需要更改什么?

iCMS 回答:无法在TestNG中初始化类,也找不到原因

根本原因:

Caused by: java.lang.NullPointerException
    at testNGbasics.Expediaassignment.<init>(Expediaassignment.java:17)

问题:WebDriver未初始化,您已使用它

 public WebDriver driver;

// Flying From class variables
    public WebElement flyingfrom = driver.findElement(By.xpath("//input[@id='flight-origin-hp-flight']"));

投掷:

Cannot instantiate class testNGbasics.Expediaassignment

原因:在创建Expediaassignment实例时,此代码将执行,并且由于drivernull,因此无法创建Expediaassignment实例。

您可以使用@BeforeSuite执行代码,然后执行所有测试。 喜欢,

    public WebDriver driver;

    // Flying From class variables
    public WebElement flyingfrom /*= driver.findElement(By.xpath("//input[@id='flight-origin-hp-flight']"))*/;
    public String DepatureFrom = "Mumbai";
    public String FF /*= flyingfrom.getAttribute("value")*/;

    // Flying To class variables
    public WebElement flyingTo /*= driver.findElement(By.xpath("//input[@id='flight-destination-hp-flight']"))*/;
    public String DD /*= flyingTo.getAttribute("value")*/;

    // Declaring departure and return date
    public String departureDate = "22/06/2020";
    public String returnDate = "21/08/2020";

    @BeforeSuite
    void setBaseURL() {
        System.setProperty("webdriver.chrome.driver","C:\\Program Files\\Java\\chromedriver.exe");
        System.setProperty(ChromeDriverService.CHROME_DRIVER_SILENT_OUTPUT_PROPERTY,"True");
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.manage().deleteAllCookies();
        driver.manage().timeouts().pageLoadTimeout(60,TimeUnit.SECONDS);
        // Navigating to expedia website
        driver.get(baseUrl);
        System.out.println(driver.getCurrentUrl());

        flyingfrom = driver.findElement(By.xpath("//input[@id='flight-origin-hp-flight']"));
        FF = flyingfrom.getAttribute("value");

        flyingTo = driver.findElement(By.xpath("//input[@id='flight-destination-hp-flight']"));
        DD = flyingTo.getAttribute("value");
    }
本文链接:https://www.f2er.com/2154189.html

大家都在问