测试自动化框架的Java空指针异常

测试自动化框架的Java空指针异常,java,selenium,selenium-webdriver,junit,Java,Selenium,Selenium Webdriver,Junit,我正在尝试使用Java和selenium编写一个自动化框架。运行Junit测试时,Firefox浏览器会启动,但无法访问我的本地站点。我得到一个空指针异常。我是Java新手,非常感谢您的帮助。谢谢 java.lang.NullPointerException at WordpressFramework.LoginPage.GoTo(LoginPage.java:18) at WordpressTest.LoginTests.Admin_User_Can_Log_In(LoginTests.j

我正在尝试使用Java和selenium编写一个自动化框架。运行Junit测试时,Firefox浏览器会启动,但无法访问我的本地站点。我得到一个空指针异常。我是Java新手,非常感谢您的帮助。谢谢

  java.lang.NullPointerException
at WordpressFramework.LoginPage.GoTo(LoginPage.java:18)
at WordpressTest.LoginTests.Admin_User_Can_Log_In(LoginTests.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)




问题似乎出在
Driver\u安装程序中
class-
getWebDriver
返回
null
,因为您尚未调用
setWebDriver()
设置
实例
值。

问题似乎出在
驱动程序设置
类-
getWebDriver
返回
null
,因为您没有调用
setWebDriver()
设置
实例
值。

非常感谢您提供的信息。抱歉,我是Java新手,正在尝试学习C#语言的教程。您是否可以在中说明在何处以及如何调用setWebDriver()code@RizwanRahmanRenesa我认为这只是你需要用
instance=new FirefoxDriver()
替换
WebDriver=new FirefoxDriver()
。非常感谢你的解决方案。你是一个救生员:)非常感谢你提供的信息。抱歉,我是Java新手,正在尝试学习C#语言的教程。您是否可以在中说明在何处以及如何调用setWebDriver()code@RizwanRahmanRenesa我认为这只是你需要用
instance=new FirefoxDriver()
替换
WebDriver=new FirefoxDriver()
。非常感谢你的解决方案。你是一个救命恩人:)
public class LoginTests {

        @Before
        public void Init()
        {
            Driver_Setup.Initialize();
        }

        @Test
        public void Admin_User_Can_Log_In(){

            LoginPage.GoTo();
            LoginPage.LoginAs("rizwan").WithPassword("*****").Login();
public class Driver_Setup {

private static WebDriver instance;

public static WebDriver getWebDriver() {
    return instance;
}

public static void setWebDriver(WebDriver instance) {
    Driver_Setup.instance = instance;
     }


           public static void Initialize()
            {   WebDriver webdriver=new   FirefoxDriver();                

      webdriver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);    }
}
public class LoginPage {

public static void GoTo() {


Driver_Setup.getWebDriver().navigate().to("http://localhost:57464/wp-login.php");


}

public static LoginCommand LoginAs(String username)
{

     return new LoginCommand(username);

}

public static class LoginCommand
{
    private   String username;
    private String password;

    public LoginCommand(String username)
    {
        this.username = username;
    }

    public LoginCommand WithPassword(String password) {
        this.password= password;
                return this;
    }

    public void Login() {
      WebElement loginInput = Driver_Setup.getWebDriver().findElement(By.id("user_login"));
      loginInput.sendKeys(username);
      WebElement passwordInput = Driver_Setup.getWebDriver().findElement(By.id("user_pass"));

      WebElement loginButton = Driver_Setup.getWebDriver().findElement(By.id("wp-submit"));

      loginButton.click();
    }
  }