测试自动化框架的Java空指针异常
我正在尝试使用Java和selenium编写一个自动化框架。运行Junit测试时,Firefox浏览器会启动,但无法访问我的本地站点。我得到一个空指针异常。我是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.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();
}
}