java.lang.NullPointerException错误 - Intellij IDEA,Selenium,Java

时间:2014-07-29 13:20:09

标签: java selenium junit intellij-idea

我正在网站上自动化一系列手动测试。

由于该网站仍在开发和测试过程中,因此不断变化。因此,我的想法是创建一组标准的“主”测试,这些测试在大多数(如果不是全部)测试中使用,我可以从其他测试中调用,并且可以在必要时轻松更改。

我创建了一个名为“Master”的包,其中包含两个名为“Login”和“Logout”的类。我创建了另一个名为'SmokeTests'的包,其中包含一个名为'Smoke003'的类。

当我从Smoke003调用Login脚本时,Login脚本成功运行但是,我似乎无法成功编写/运行Logout脚本。

请参阅下面的3个不同类的代码:

登录:

package Master;

import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import static junit.framework.TestCase.assertEquals;

public class Login {

static WebDriver driver;

@Test
public void testLogin(){
    String loginname1 = "EMAIL HERE";
    String password1 = "PASSWORD HERE";

    driver = new FirefoxDriver();
    driver.get("WEBSITE HERE");

driver.findElement(By.id("LoginButton")).click();
driver.findElement(By.id("loginEmail")).sendKeys(loginname1);
driver.findElement(By.id("loginPassword")).sendKeys(password1);
driver.findElement(By.id("loginOKButton")).click();

    new     WebDriverWait(driver,5).until(ExpectedConditions.textToBePresentInElementLocated(By.className("underline"),"Events"));
    assertEquals("TEXT HERE",driver.findElement(By.className("TEXT HERE")).getText(),"TEXT HERE");

}

}

注销:

package Master;

import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;

public class Logout {

static WebDriver driver;

@Test
public void testLogout(){

    driver.findElement(By.cssSelector("TEXT HERE")).click();

}

}

SMOKE003:

package SmokeTests;

import Master.Login;
import Master.Logout;
import org.junit.Test;

public class Smoke_003 {

public static void main(String args[]) {
    Login Login01 = new Login();
    Login01.testLogin();

    Logout Logout01 = new Logout();
    Logout01.testLogout();
}

在运行/调试注销测试时,是否有人能够帮助解决为什么我一直收到错误消息'java.lang.NullPointerException'?我知道Logout脚本中没有指定driver.get网站。我不相信我需要这样做,因为当我退出登记时我已经登录了吗?

注意:出于保密原因,我已经编辑了一些信息,例如电子邮件地址等。

更新:如果我运行Smoke003,它会调用登录脚本并成功登录但在尝试使用以下错误消息完全调用注销脚本时失败:

Exception in thread "main" java.lang.NullPointerException
at Master.Logout.testLogout(Logout.java:14)
at SmokeTests.Smoke_003.main(Smoke_003.java:14)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at     sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

2 个答案:

答案 0 :(得分:1)

你忘了实例化驱动程序。请尝试以下方法:

public class Logout {

static WebDriver driver;

@Test
public void testLogout(){

    driver = new FirefoxDriver();
    driver.get("WEBSITE HERE");

    driver.findElement(By.cssSelector("TEXT HERE")).click();

}

答案 1 :(得分:0)

您应该添加@Before方法来实例化驱动程序。使用@Before注释的方法将在每次测试之前运行

@Before
public void setup(){
    driver = new FirefoxDriver();
}