在远程服务器上运行/控制模拟器

时间:2019-01-26 21:42:10

标签: android mobile appium

我知道这对SO不适合,但是我无处可问,希望在mods关闭该问题之前能得到答案!

所以我每天都使用几个android应用程序,这非常耗时。 我想以某种方式使过程自动化。

这个想法是在服务器上安装某种仿真器,然后通过某种编程语言对该仿真器进行编程,以在需要时在服务器上运行应用程序。

我是一名Web开发人员,我与PHPnodejspython合作, 对移动空间不是很熟悉,所以我想在这里问。

有什么解决方案可以做我想要的吗?我四处搜寻并发现了Appium,但不确定它是否可以满足我的要求。

请注意,这些应用没有公开的“ api”供我使用。

我也只能通过'ssh terminal'远程访问服务器,因此具有'GUI'依赖关系的解决方案对我不起作用。

3 个答案:

答案 0 :(得分:3)

您可以使用某些模拟器(例如Bluestacks),然后运行脚本来运行应用程序,然后使用宏工具来模拟游戏或应用程序中的点击次数

在bluestacks中检查此链接以获取宏工具:https://www.bluestacks.com/blog/bluestacks-exclusives/combo-key-bluestacks-record-replay-action-single-key-en.html

或者您可以编写一个脚本,该脚本使用adb命令来运行和控制应用程序。

例如。 运行应用程序。 adb shell am start -n com.android.settings/.Settings 此命令将在模拟器中打开设置应用。

要发送触摸事件,您可以使用:adb shell input touch <x> <Y>

adb shell input keyevent <keycode> to send keycodes

答案 1 :(得分:1)

我假设您要自动化本机Android应用程序。

简短的回答:Appium将是您的理想解决方案。

在远程服务器上,您需要:

安装了所有组件后,您将能够在服务器上启动Appium节点并针对它们运行Appium脚本。

我建议使用choise的CI服务器来自动化此过程。它将使您的测试槽ssh终端的启动更加轻松/ 100%自动化。

我从来没有在python中使用过Selenium / Appium,所以我无法真正为您提供Appium测试代码示例,但是我确定有很多关于python的基本教程。

答案 2 :(得分:1)

您必须在远程服务器中安装AppiumServer和android sdk / simulator。我将展示如何在Java中完成。希望您可以将其转换为javascript代码。

使用 ipconfig

检查远程服务器的ip地址

在远程服务器中启动您的appium服务器

>appium -a "ip address of remote server" -p 4732 --session-override

在远程服务器中启动仿真器。

在代码中定义并初始化 DesiredCapabilities AppiumDriver ,如下所示。

AppiumDriver<MobileElement> driver;
DesiredCapabilities caps= new DesiredCapabilities();
caps.setCapability(MobileCapabilityType.DEVICE_NAME, "android device");
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID);
caps.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 300);
caps.setCapability(MobileCapabilityType.AUTOMATION_NAME, "uiautomator2");
caps.setCapability("appPackage", "enter your appPackage");
caps.setCapability("appActivity", "enter your appActivity");

driver= new AndroidDriver<MobileElement>(new URL("remote server ip address" + ":4732/wd/hub"), caps);
  

确保两个设备都在同一网络中。 ping到远程服务器ip地址时必须获得响应