如何将 appium 连接到 android 上现有的正在运行的应用程序

Anu*_*ani 5 java selenium-webdriver appium appium-android

我正在编写一个跨平台自动化,我有一个 selenium 桌面驱动程序,我执行一些操作,在设备上启动我的服务,并在 android 设备上启动警报,我想接受警报,然后同时使用网络驱动程序和移动驱动程序执行某些功能。

Web 驱动程序工作正常,它在 Web 浏览器上执行所需的操作并在设备端创建警报。

因此,我的应用程序/服务已经在设备上启动,现在当我尝试设置 appium 功能时:

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platform", "ANDROID");
capabilities.setCapability("version", "4.4");
capabilities.setCapability("automationName", "uiautomator2");
capabilities.setCapability("deviceName", "karnak");
capabilities.setCapability("platformVersion", "7.1");
capabilities.setCapability("noReset", "true");
capabilities.setCapability("autoGrantPermissions", "true");
capabilities.setCapability("appPackage", "xyz");
capabilities.setCapability("appActivity", ".abc");
capabilities.setCapability("optionalIntentArguments", payload);
Run Code Online (Sandbox Code Playgroud)

发生的情况是 appium 将终止我拥有的现有会话,并将安装应用程序并尝试使用提供的有效负载启动活动,该有效负载现在无效。

因此,有一种方法可以为设备上现有的正在运行的应用程序/服务创建移动驱动程序,而无需安装应用程序并重新启动它。

我发现您必须执行 noReset 但这似乎对我不起作用。我尝试提供 appWaitPackage 和 appWaitActivity 而不是 appPackage 和 appActivity ,但也没有用。

如果你们中有人知道我如何将移动驱动程序附加到现有的运行应用程序/服务,请告诉我。

Mat*_*ahm 2

Appium 允许通过多种方式使用您的应用程序https://appium.io/docs/en/writing-running-appium/caps/

如果您不指定包含 apk 链接的应用程序标签,则不会安装任何内容。但是,正如您所指出的,它仍然会基于 appPackage / appActivity 启动应用程序的新实例。

要解决这个问题,请使用标志 autoLaunch 自动初始化正在测试的应用程序。如果这是 false,Appium 不会安装/启动正在测试的应用程序。默认为 true。

然后,您可以将其与 dontStopAppOnReset=true 结合使用,以便在测试完成时让应用程序保持运行。