代码之家  ›  专栏  ›  技术社区  ›  max

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

  •  6
  • max  · 技术社区  · 7 年前

    我知道这个问题不适合你,但我没有其他地方可以问,希望我能在mods结束这个问题之前得到答案!

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

    其想法是在服务器上安装某种模拟器,并通过某种编程语言对模拟器进行编程,以便在需要时在服务器上运行应用程序。

    我是一名网络开发人员,与 PHP , nodejs , python , 我对移动空间不太熟悉,所以我想问一下。

    有什么办法可以满足我的需求吗?我四处搜索,发现 Appium 但我不确定它是否能满足我的要求。

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

    此外,我只能通过“ssh终端”远程访问服务器,所以依赖“GUI”的解决方案对我来说不起作用。

    3 回复  |  直到 7 年前
        1
  •  3
  •   nkalra0123    7 年前

    你可以使用一些模拟器,比如Bluestack,然后运行脚本来运行应用程序,然后使用宏工具来模拟游戏或应用程序中的点击

    查看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 此命令将在emulator中打开设置应用程序。

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

    adb shell input keyevent <keycode> to send keycodes
    
        2
  •  1
  •   Angusiasty    7 年前

    我假设你想自动化原生Android应用程序。

    简短回答:Appium将是一个很好的解决方案。

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

    安装完所有设备后,您将能够在服务器上启动Appium节点,并对其运行Appium脚本。

    我建议使用choise的CI服务器来自动化这个过程。这将使通过ssh终端启动测试变得更容易/100%自动化。

    我从未在python中使用过Selenium/Appium,因此我无法真正帮助您学习Appium测试代码示例,但我相信有很多python的基本教程。

        3
  •  1
  •   Suban Dhyako    7 年前

    必须在远程服务器中安装AppiumServer和android sdk/simulator。我将展示如何用java实现它。希望你能把它转换成javascript代码。

    使用以下命令检查远程服务器的ip地址: ipconfig

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

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

    在远程服务器中启动模拟器。

    定义并初始化 期望的能力 和 阿皮姆河 在代码中,如下所示。

    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地址时必须得到响应