Impossible d'Instancier une classe d'erreur - Selenium WebDriver

Je suis confronté à ce " Ne peut pas insantiate de la classe d'erreur sur l'exécution de l'une de mes cas de test dans selenium webdriver à l'aide de java.

Ci-dessous est la classe de la fonctionnalité de l'essai,

package Pages;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
import Lib.lib;
public class KnowledgeBase extends lib{
By sortBylink = By.xpath("html/body/div[1]/featured-studies-grid/div[2]/featured-studies-toolbar/div/div[2]/div[2]/div/div");
By featuredOption = By.xpath("html/body/div[1]/featured-studies-grid/div[2]/featured-studies-toolbar/div/div[2]/div[2]/div/ul/li[1]");
By mostRcnt = By.xpath("html/body/div[1]/featured-studies-grid/div[2]/featured-studies-toolbar/div/div[2]/div[2]/div/ul/li[2]");
String featOption = driver.findElement(By.xpath("html/body/div[1]/featured-studies-grid/div[2]/featured-studies-toolbar/div/div[2]/div[2]/div/ul/li[1]")).getText();
String mostRecent = driver.findElement(By.xpath("html/body/div[1]/featured-studies-grid/div[2]/featured-studies-toolbar/div/div[2]/div[2]/div/ul/li[2]")).getText();
public void initSBy() throws Exception
{
driver.findElement(sortBylink).click();
Thread.sleep(1500);
}
public void selectfO() throws Exception
{
driver.findElement(featuredOption).click();
Thread.sleep(5000);
}
public void selectMr() throws Exception
{
driver.findElement(mostRcnt).click();
Thread.sleep(5000);
}
public void sortBy(String sProp) throws Exception
{
this.initSBy();
if (sProp == featOption) {
this.selectfO();
}
else if (sProp == mostRecent){
this.selectMr();
}
else {
System.out.println("Incorrect option. Test failed.");
}
}
}

Ci-dessous est ma Classe de Cas de Test

package TestCases;
import org.testng.annotations.Test;
import Lib.lib;
import Pages.KnowledgeBase;
import Pages.LoginPage;
public class sortingTextKB extends lib {
LoginPage uLogin = new LoginPage();
KnowledgeBase sortObj = new KnowledgeBase();
//Logging In
@Test (priority = 1)
public void loggingIn() throws Exception
{
uLogin.loginToKB("[email protected]", "uziiiii");
}
//Sorting
@Test (priority = 2)
public void sortIn() throws Exception
{
sortObj.sortBy("Most Recent");
}
}

Ci-dessous est ma Lib de classe, qui contient le chrome de configuration du pilote d'

package Lib;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.AfterTest;
public class lib {
protected static WebDriver driver = null;
@BeforeTest
public void chrome_extension()
{
System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
driver = new ChromeDriver(options);
driver.get("http://www.testsite.com");
}
@AfterTest
public void quit()
{
driver.quit();
}
}

Quand je lance ma classe de cas de test, j'obtiens l'erreur suivante,

org.testng.TestNGException: 
Cannot instantiate class TestCases.sortingTextKB
at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:38)
at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:387)
at org.testng.internal.ClassHelper.createInstance(ClassHelper.java:299)
at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:110)
at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:186)
at org.testng.internal.TestNGClassFinder.<init>(TestNGClassFinder.java:120)
at org.testng.TestRunner.initMethods(TestRunner.java:409)
at org.testng.TestRunner.init(TestRunner.java:235)
at org.testng.TestRunner.init(TestRunner.java:205)
at org.testng.TestRunner.<init>(TestRunner.java:160)
at org.testng.remote.RemoteTestNG$1.newTestRunner(RemoteTestNG.java:141)
at org.testng.remote.RemoteTestNG$DelegatingTestRunnerFactory.newTestRunner(RemoteTestNG.java:271)
at org.testng.SuiteRunner$ProxyTestRunnerFactory.newTestRunner(SuiteRunner.java:561)
at org.testng.SuiteRunner.init(SuiteRunner.java:157)
at org.testng.SuiteRunner.<init>(SuiteRunner.java:111)
at org.testng.TestNG.createSuiteRunner(TestNG.java:1299)
at org.testng.TestNG.createSuiteRunners(TestNG.java:1286)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
at org.testng.TestNG.run(TestNG.java:1057)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:29)
... 21 more
Caused by: java.lang.NullPointerException
at Pages.KnowledgeBase.<init>(KnowledgeBase.java:22)
at TestCases.sortingTextKB.<init>(sortingTextKB.java:12)
... 26 more

Suivant est le 22 ligne de la base de connaissances de la classe,

String featOption = driver.findElement(By.xpath("html/body/div[1]/featured-studies-grid/div[2]/featured-studies-toolbar/div/div[2]/div[2]/div/ul/li[1]")).getText();

S'il vous plaît laissez-moi savoir pourquoi, je suis confronté à cette "impossible d'instancier une classe d'erreur". Grâce

  • Vous savez ce que la ligne est à l'origine du problème... qu'avez-vous essayé de le résoudre?
  • Je suis incapable de comprendre pourquoi ce n'est pas l'instanciation de la classe. Si je n'ai pas utiliser au-dessus de la ligne 22 , alors il pourrait fonctionner, mais j'ai besoin de pour obtenir le texte, donc je peux comparer avec celui que j'ai donner au moment de l'exécution.
  • Caused by: java.lang.NullPointerException avez-vous essayé une recherche sur google ce qu'est un NullPointerException est? Ensuite, regardez à la ligne 22 et faire un peu de dépannage. Poste le code que vous avez essayé et ce qui ne fonctionne pas.
  • le cas ici, c'est que, dans ma base de connaissances de la classe dans la fonction sortBy(String sProp), si je donne codé en dur valeurs de "sProp" à l'intérieur "si les déclarations" puis dans mon cas, fonctionne très bien, mais si je passe à la chaîne dans leur utilisation du pilote.trouver de....getText(); déclaration alors que je suis ne peut pas instancier la classe d'erreur. Je ne sais pas quel est le problème avec ça si je passe une variable de chaîne dans les instructions if.
  • le pilote n'est pas initialisé, peut-être que votre @BeforeTest public void chrome_extension() ne soit pas exécutée
  • Mais si je passe codés en dur valeurs comme ceci: if (sProp == "les Plus Récentes") { code ici.... } Dans ce cas , le pilote est initialisé. La question est la Chaîne de commandement où je reçois le texte des options et de la passer comme une chaîne de caractères à vérifier avec le choix de l'utilisateur.
  • avez-vous vérifié que ce chemin existe "html/body/div[1]/featured-studies-grid/div[2]/featured-studies-toolbar/div/div[2]/div[2]/div/ul/li[1]" ?
  • Oui, le chemin d'accès existe, et j'ai vérifié aussi bien, comme vous pouvez le voir 'featuredOption" et "mostRcnt' boutons de définition ont les mêmes requêtes xpath

InformationsquelleAutor Uziii | 2015-09-11