【发布时间】:2016-09-08 13:12:14
【问题描述】:
有没有办法在android自动化中使用带有android驱动程序的Appium来执行以下过程?
从某个特定屏幕按主页按钮。 将应用程序置于后台。 一段时间后从同一屏幕打开应用程序。
如果有人知道,请帮忙。
【问题讨论】:
有没有办法在android自动化中使用带有android驱动程序的Appium来执行以下过程?
从某个特定屏幕按主页按钮。 将应用程序置于后台。 一段时间后从同一屏幕打开应用程序。
如果有人知道,请帮忙。
【问题讨论】:
iOS 和 Android 均支持以下方法:
(AppiumDriver)driver.runAppInBackground(10);//put app in background for 10 seconds
(AppiumDriver)driver.launchApp();//launch the app again
希望对你有帮助!
【讨论】:
尝试专注于您当前的活动:
(AppiumDriver)driver.runAppInBackground(10);
(AppiumDriver)driver.currentActivity();
或
尝试开始与您相同的活动:
(AppiumDriver)driver.runAppInBackground(10);
(AppiumDriver)driver.startActivity("appPackage","com.example.android.apis", null, null);
【讨论】:
将应用置于后台:
((AndroidDriver)driver).runAppInBackground(Duration.ofSeconds(20));
从后台启动应用程序:
driver.activateApp("app package name");
【讨论】:
driver.runAppInBackground(Duration.ofSeconds(10));
【讨论】:
appium_lib ruby 客户端允许您这样做
background_app 5 其中 5 是您希望应用程序在后台运行的秒数。这将自动在同一屏幕中恢复应用程序。
【讨论】:
这是它的工作原理。
后台运行应用代码
((AppiumDriver)driver).runAppInBackground(Duration.ofSeconds(10));
再次回到当前活动
((StartsActivity)driver).currentActivity();
【讨论】:
public static void minimizeMaximize() {
try {
driver.runAppInBackground(10);
((AndroidDriver) driver).startActivity("appPackage", "appActivity");
} catch (Exception e) {
e.printStackTrace();
}
}
您必须输入您的应用程序包名称和活动名称才能最大化应用程序。 例如:
public static void minimizeMaximize() {
try {
driver.runAppInBackground(10);
((AndroidDriver) driver).startActivity("com.example.test", "com.example.LaunchApp");
} catch (Exception e) {
e.printStackTrace();
}
}
这肯定行得通。
【讨论】:
适合我:((Appium 1.10, Android 8.1))
2 个选项:
第一种解决方案:
driver.runAppInBackground(Duration.ofMillis(300));
关闭弹出窗口后,您使用此行,您的应用将转到后台并返回,您将重新获得焦点到您的应用。
第二个解决方案:更好的一个:)
将此行添加到设置中:
capability.setCapability("noReset", true);
从现在开始,您的应用程序将像普通应用程序一样启动,无需设置重置即没有弹出窗口,您根本不会有焦点问题。
我希望它也对你有用! :)
【讨论】:
这将在执行 Appium 脚本时导航到 Gmail 应用程序。您只需更改应用程序的包名称和活动即可。
Activity activity = new Activity("com.google.android.gm", "com.google.android.gm.ConversationListActivityGmail");
activity.setStopApp(false);
((AndroidDriver<MobileElement>) driver).startActivity(activity);
【讨论】:
你可以使用这个sn-p的代码
((AppiumDriver)driver).runAppInBackground(Duration.ofSeconds(10));
((StartsActivity)driver).currentActivity();
如果它不起作用,请使用最新版本更新您的appium,并尝试使用相同的 sn-p 代码。
谢谢
【讨论】: