appium - 如何使用 appium 在两个本机应用程序之间切换
问题描述
我想在两个应用程序之间切换而不会丢失应用程序的先前状态。我们如何使用 appium 来实现这一点。
场景: 1. 启动任何需要 OTP 登录的应用程序(例如:filpkart) 2. 启动 SMS 应用程序并读取 OTP 3. 关闭 SMS 应用程序并切换回第一个应用程序并输入我们从 SMS 应用程序读取的 OTP。
有人可以帮我解决这个问题。
问候, 湿婆奥莱蒂
解决方案
更新
为此,您需要定义两个具有不同端口的 AppiumServer、两个AppiumDriver (一个用于 sms 应用程序,另一个用于另一个应用程序)。
使用 2 个不同的端口启动 appium 驱动程序,例如:4723 和 4724。定义 2 个驱动程序:
public static AppiumDriver<MobileElement> driver1;
public static AppiumDriver<MobileElement> smsDriver;
为两个应用程序定义DesiredCapabilities并初始化两个驱动程序。
首先打开并登录。
public void startApp1(){
DesiredCapabilities cap1 = new DesiredCapabilities();
cap1.setCapability(MobileCapabilityType.NO_RESET, true);
cap1.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 600);
cap1.setCapability(MobileCapabilityType.DEVICE_NAME, "android device");
cap1.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID);
cap1.setCapability("appPackage", "your app1 package name");
cap1.setCapability("appActivity", "your app1 package name");
cap1.setCapability(MobileCapabilityType.AUTOMATION_NAME, "uiautomator2");
driver1 = new AndroidDriver<MobileElement>(new URL("http://127.0.0.1:4723/wd/hub"), caps);
}
之后启动短信并执行操作
public void startApp2(){
DesiredCapabilities cap2 = new DesiredCapabilities();
cap2.setCapability(MobileCapabilityType.NO_RESET, true);
cap2.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 600);
cap2.setCapability(MobileCapabilityType.DEVICE_NAME, "android device");
cap2.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID);
cap2.setCapability("appPackage", "your app1 package name");
cap2.setCapability("appActivity", "your app1 package name");
cap2.setCapability(MobileCapabilityType.AUTOMATION_NAME, "uiautomator2");
smsDriver = new AndroidDriver<MobileElement>(new URL("http://127.0.0.1:4724/wd/hub"), caps);
}
现在要从 app1 切换到 app2,您可以使用调用 startApp2 方法。现在如果你想再次切换回来切换到app1。利用:
driver1.activateApp(appPackage of app1);
现在,如果您想再次切换到 app2,请使用: driver2.activateApp(appPackage of 2nd app);
推荐阅读
- python - 有没有使用python在django中导入请求库的解决方案?
- python - 如何获取单个库存的产品可用数量(Odoo11)
- laravel-5 - 在服务器上安装 laravel 应用程序时出现内存不足错误
- python - 如何添加增量列,为特定 ID 的 csv 中的每个新对象添加 +1
- javascript - 如何测量字母中使用的笔画长度?
- c# - asp.net core 2 从本地磁盘驱动器加载和显示图像
- ios - IOS Safari 上的实习生 3.4.1 “无法在 Safari 上设置接受不安全的证书”
- docker - NodeJS:KafkaJSProtocolError:组成员支持的协议与现有成员的协议不兼容
- php - 在核心 PHP 中的一个表单提交中更新和删除
- perl - 如何在 UNIX 或 perl 中搜索和打印匹配的 wold?