如何使用appium关闭/杀死Android设备上的应用程序?

时间:2016-05-12 06:30:34

标签: java android appium kill

要杀死/关闭应用我尝试了driver.close(), driver.closeApp(), driver.quit(),但应用仍在后台运行。 其中一个命令是否真的关闭了应用程序?如果是这样,怎么样?如果没有 - 有人可以提供替代解决方案吗?

9 个答案:

答案 0 :(得分:5)

使用appium时,您调用的方法都不会从后台删除应用。这就是他们所说的:

((AppiumDriver)driver).closeApp(); // Close the app which was provided in the capabilities at session creation   

((AppiumDriver)driver).close(); // from *RemoteWebDriver.java*, used to close the current browser page  

((AppiumDriver)driver).quit(); // quits the session created between the client and the server

所以你可以尝试做的是:

((AppiumDriver)driver).resetApp(); // Reset the currently running app for this session

或尝试这两者的组合:

((AppiumDriver)driver).removeApp(<package name>); // Remove the specified app from the device (uninstall)
((AppiumDriver)driver).installApp(<path to apk>); // Install an app on the mobile device

答案 1 :(得分:3)

我建议:

  • resetApp()

  • closeApp()

  • removeApp()

    您可以参考以下链接:Java-client Appium

答案 2 :(得分:2)

如果你将apk安装作为脚本的一部分,你可以使用内置的appium capabiltiy关闭并删除应用程序。当你再次触发脚本时,它会检查它是否存在于设备中,如果没有则会安装它,

capabilities.setCapability("fullReset", true);

答案 3 :(得分:2)

要关闭app sesssion,请使用以下命令:

driver.resetApp();

答案 4 :(得分:1)

  1. 设置你的能力

    cap.setCapability("fullReset", false);
    cap.setCapability("noReset", true);
    
  2. 逻辑

    driver.closeApp();
    Boolean b = driver.isAppInstalled("here put your app's bundle ID");
    if (b == true) {
        driver.launchApp();
    } else {
        driver.installApp(app.getAbsolutePath());
    }
    
  3. 也许你需要根据你的要求稍微操纵一下代码。

答案 5 :(得分:1)

您也可以尝试这样的手动方式,

//This code will press your android device's recent button :

$driver.pressKeyCode(AndroidKeyCode.KEYCODE_APP_SWITCH);

//and click to the close button of you application:

$driver.findElement(By.id("id of the element to close app")).click();

我希望对您有帮助

答案 6 :(得分:0)

以上都没有在Python中为我工作,所以我只是对设备进行了重置以重置应用缓存。这会从最近的进程中删除应用程序并停止它在后台运行。

os.system('adb shell "pm clear ' + desired_caps1["appPackage"] + '"')

desired_caps1是我外部JSON文件中所需的功能,显然&#34; appPackage&#34;只是应用程序的包名称,例如:com.example.id

答案 7 :(得分:0)

对于nativescript-dev-appium
版本6.1.0 release
driver.closeApp()和driver.launchApp()结合使用,使用:
class Device: def __init__(self): self.identify = self.Identify(self.outer_send()) def outer_send(message): print(message) def last_error(self): return self.identify.error_info class Identify: def __init__(self, send): self.inner_send() = send() def set_error(self, error): self.error_info = error device = Device() device.identify.inner_send('test')

答案 8 :(得分:0)

要杀死/终止一个应用程序,从Appium 1.6.0开始,如果您使用UIAutomator2驱动程序,则可以在Java中使用它:

driver.terminateApp(packagename);

其中 packagename 是您的应用程序包,例如com.twitter.android

请参见http://appium.io/docs/en/commands/device/app/terminate-app/以供参考