【发布时间】:2020-02-06 06:01:19
【问题描述】:
为什么会发生以下情况,我如何在EnglishHomepage 下使用它?
我的代码(不工作):
public class EnglishHomepage {
WebDriver driver = null;
public Actions action = new Actions(driver);
By login_button = By.xpath("//*[@id=\"wrapper\"]/div[1]/header/div[2]/div[1]/div/a[15]");
//constructor of EnglishHomepage
public EnglishHomepage (WebDriver driver) {
this.driver = driver;
}
public void clickFogotPassword() {
driver.findElement(login_button ).click();
}
public void clickDropdownValue() {
action.doubleClick(driver.findElement(xpath2)).perform();
}
}
代码(工作)
public class EnglishHomepage {
WebDriver driver = null;
By login_button = By.xpath("//*[@id=\"wrapper\"]/div[1]/header/div[2]/div[1]/div/a[15]");
//constructor of EnglishHomepage
public EnglishHomepage (WebDriver driver) {
this.driver = driver;
}
public void clickFogotPassword() {
driver.findElement(login_button ).click();
}
public void clickDropdownValue() {
**Actions action = new Actions(driver);**
action.doubleClick(driver.findElement(xpath2)).perform();
}
}
我可以在clickDropdownValue 方法下使用public Actions action = new Actions(driver);,并且测试按预期工作正常。
然而,
当我在班级下移动public Actions action = new Actions(driver); 时,可以看到java.lang.NullPointerException。
异常
在 java.util.Objects.requireNonNull(Objects.java:203) 在 org.openqa.selenium.interactions.Actions.(Actions.java:65) 在 pages.EnglishHomepage.(EnglishHomepage.java:12) 在 testcases.Tc4_Market_status.click(Tc4_Market_status.java:27) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:133) 在 org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:584) 在 org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:172) 在 org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46) 在 org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:804) 在 org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:145) 在 org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146) 在 org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128) 在 java.util.ArrayList.forEach(ArrayList.java:1257) 在 org.testng.TestRunner.privateRun(TestRunner.java:770) 在 org.testng.TestRunner.run(TestRunner.java:591) 在 org.testng.SuiteRunner.runTest(SuiteRunner.java:402) 在 org.testng.SuiteRunner.runSequentially(SuiteRunner.java:396) 在 org.testng.SuiteRunner.privateRun(SuiteRunner.java:355) 在 org.testng.SuiteRunner.run(SuiteRunner.java:304) 在 org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53) 在 org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96) 在 org.testng.TestNG.runSuitesSequentially(TestNG.java:1180) 在 org.testng.TestNG.runSuitesLocally(TestNG.java:1102) 在 org.testng.TestNG.runSuites(TestNG.java:1032) 在 org.testng.TestNG.run(TestNG.java:1000) 在 org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115) 在 org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251) 在 org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
【问题讨论】:
-
请参考更新后的问题,我的意思是在英文主页下
-
不初始化WebDriver driver = null;
-
@NagarjunaYalamanchili 是多余的,但不疼。