driver.startActivity()函数有替代方法吗?

问题描述 投票:0回答:1

我使用的是 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)


java android appium
1个回答
0
投票

尝试使用以下方法在不退出驱动程序的情况下启动和关闭应用程序。根据我所做的调查,Appium 2.0.0 已弃用 startActivity()

activateApp(java.lang.StringbundleId) 如果给定的应用程序已安装但未运行或正在后台运行,则激活该应用程序。 参数:bundleId - 要激活的应用程序的捆绑包标识符(或应用程序 ID)。

terminateApp(java.lang.String bundleId) 如果特定应用程序正在运行,则终止该应用程序。 参数:bundleId - 要终止的应用程序的包标识符(或应用程序 ID)。返回:如果应用程序之前运行过并且已成功停止,则返回 true。

参考:https://appium.github.io/java-client/

© www.soinside.com 2019 - 2024. All rights reserved.