要杀死/关闭应用我尝试了driver.close(), driver.closeApp(), driver.quit()
,但应用仍在后台运行。
其中一个命令是否真的关闭了应用程序?如果是这样,怎么样?如果没有 - 有人可以提供替代解决方案吗?
答案 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)
设置你的能力
cap.setCapability("fullReset", false);
cap.setCapability("noReset", true);
逻辑
driver.closeApp();
Boolean b = driver.isAppInstalled("here put your app's bundle ID");
if (b == true) {
driver.launchApp();
} else {
driver.installApp(app.getAbsolutePath());
}
也许你需要根据你的要求稍微操纵一下代码。
答案 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/以供参考