This question already has answers here:
What is a NullPointerException, and how do I fix it?
(12个答案)
5年前关闭。
我正在自动化网站上的一组手动测试。
由于该网站仍处于开发和测试过程中,因此不断变化。因此,我的想法是创建一套标准的“主”测试,这些标准可用于大多数(如果不是全部)测试,可以从其他测试中调用,并且可以在需要时轻松更改。
我创建了一个名为“ Master”的程序包,其中包含两个名为“ Login”和“ Logout”的类。我创建了另一个名为“ SmokeTests”的程序包,其中包含一个名为“ Smoke003”的类。
当我从Smoke003调用Login脚本时,它运行成功,但是,我似乎无法成功编写/运行Logout脚本。
请在下面的代码中查看3个不同的类:
登录:
}
登出:
}
SMOKE003:
在运行/调试注销测试时,有人能帮助我为什么继续收到错误消息“ java.lang.NullPointerException”吗?我知道注销脚本中没有指定driver.get网站。我不认为我需要这样做,因为到我注销时,我已经登录了吗?
注意:出于保密原因,我已经编辑了一些信息,例如电子邮件地址等。
更新:如果我运行Smoke003,它会调用登录脚本并成功登录,但是在尝试使用以下完整错误消息调用注销脚本时失败:
(12个答案)
5年前关闭。
我正在自动化网站上的一组手动测试。
由于该网站仍处于开发和测试过程中,因此不断变化。因此,我的想法是创建一套标准的“主”测试,这些标准可用于大多数(如果不是全部)测试,可以从其他测试中调用,并且可以在需要时轻松更改。
我创建了一个名为“ Master”的程序包,其中包含两个名为“ Login”和“ Logout”的类。我创建了另一个名为“ SmokeTests”的程序包,其中包含一个名为“ Smoke003”的类。
当我从Smoke003调用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”吗?我知道注销脚本中没有指定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)
最佳答案
您忘记了实例化驱动程序。请尝试以下操作:
public class Logout {
static WebDriver driver;
@Test
public void testLogout(){
driver = new FirefoxDriver();
driver.get("WEBSITE HERE");
driver.findElement(By.cssSelector("TEXT HERE")).click();
}
07-26 06:31