我使用的是 Appium 2.2.3、Java JDK 17.05、Appium Java 客户端 9.0.0、TestNG 7.8.0。我正在尝试运行下面的代码并收到 java 空指针异常。试图找到替代品
Activity activity = new Activity("com.androidsample.generalstore",
"com.androidsample.generalstore.MainActivity");
driver.startActivity(activity);
是否有其他替代方法来配置应用程序包和活动,以便我可以在同一个类中运行多个 @Test ?谢谢!
@BeforeMethod (alwaysRun=true)
public void setActivity() {
Activity activity = new Activity("com.androidsample.generalstore",
"com.androidsample.generalstore.MainActivity");
driver.startActivity(activity);
}
java.lang.NullPointerException: Cannot invoke "pageObjects.android.FormPage.setActivity()" because "this.formPage" is null
at testCases.eCommerce_tc_2.preSetup(eCommerce_tc_2.java:18)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
at org.testng.internal.invokers.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:69)
at org.testng.internal.invokers.ConfigInvoker.invokeConfigurationMethod(ConfigInvoker.java:390)
at org.testng.internal.invokers.ConfigInvoker.invokeConfigurations(ConfigInvoker.java:325)
at org.testng.internal.invokers.TestInvoker.runConfigMethods(TestInvoker.java:810)
at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:577)
at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:227)
at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:957)
at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:200)
at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at org.testng.TestRunner.privateRun(TestRunner.java:848)
at org.testng.TestRunner.run(TestRunner.java:621)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:443)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:437)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:397)
at org.testng.SuiteRunner.run(SuiteRunner.java:336)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1280)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1200)
at org.testng.TestNG.runSuites(TestNG.java:1114)
at org.testng.TestNG.run(TestNG.java:1082)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
尝试使用以下方法在不退出驱动程序的情况下启动和关闭应用程序。根据我所做的调查,Appium 2.0.0 已弃用 startActivity()
activateApp(java.lang.StringbundleId) 如果给定的应用程序已安装但未运行或正在后台运行,则激活该应用程序。 参数:bundleId - 要激活的应用程序的捆绑包标识符(或应用程序 ID)。
terminateApp(java.lang.String bundleId) 如果特定应用程序正在运行,则终止该应用程序。 参数:bundleId - 要终止的应用程序的包标识符(或应用程序 ID)。返回:如果应用程序之前运行过并且已成功停止,则返回 true。