【问题标题】:Multi-devices support in AndroidAndroid中的多设备支持
【发布时间】:2013-09-14 05:05:58
【问题描述】:

我试图在 Andriod 平台的多个设备上运行脚本,但我无法运行。我浏览了 Github 页面寻求解决方案,发现以下关于 Support multiple (Android) devices from a single Appium server 的链接

但是,我仍然无法弄清楚多个设备的设置环境。

【问题讨论】:

  • 你试过什么?向我们展示您目前的进展,以便我们为您提供帮助。
  • 在 GUI 中并行启动两个 appium 服务器,但它没有运行。我不知道如何在终端中运行。请帮助我如何在多个设备上运行单个项目脚本。

标签: android appium


【解决方案1】:

下面的代码会对你有所帮助。

//从单个appium服务器运行多个模拟器

public class Test{

    WebDriver driver = null;
    int timeOut=180;
    int port=-1;

    Test(int port){
        this.port=port;
    }

    public void testEmulator(int p) throws Exception {
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability(CapabilityType.BROWSER_NAME, "Android");
        capabilities.setCapability(CapabilityType.VERSION, "4.3");
        capabilities.setCapability(CapabilityType.PLATFORM, "Windows");

        capabilities.setCapability("udid","emulator-"+p);

        capabilities.setCapability("app-package", "your.app.pkg");
        capabilities.setCapability("app-activity",
            "your.app.pkg.Activity");
        driver = new RemoteWebDriver(new URL("http://127.0.0.1:"+this.port+"/wd/hub"),
        capabilities);
        driver.manage().timeouts().implicitlyWait(timeOut, TimeUnit.SECONDS);
        Thread.sleep(50000);
    }

    public void tearDown() {
        if (driver != null)
            driver.quit();
    }

    public void runTest() {
        try {
            testEmulator(5554);     // for emulator on port 5554
            tearDown();
            testEmulator(5556);     // for emulator on port 5556
            tearDown();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {
        new Test(4723).runTest();       // appium server port 4723
    }
}

【讨论】:

    【解决方案2】:

    在多个设备上运行 appium 脚本

    1. 您必须根据设备数量启动 appium 服务器 不同的端口号。
    2. 为每个端口创建驱动程序实例 你最喜欢的语言(java、ruby)
    3. 同时运行这些脚本。
    4. 您还可以创建基于线程的程序,该程序将创建不同的 驱动程序实例。

    这里我创建了简单的基于java线程的程序

    https://github.com/sameer49/Appium-Grid-For-Android

    【讨论】:

      【解决方案3】:

      对于多个安卓设备上的顺序或并行执行,我们需要 -

      1. 每个设备或模拟器都有单独的 Appium 实例
      2. 对于每个设备/Appium 实例,为 Appium 端口、引导端口、设备 ID(即 UDID,而不是设备名称)提供不同的值
      3. 如果在应用上使用 Chrome 浏览器,则提供不同的 Chrome 驱动程序端口

      查看下面的帖子,它使用 Java Thread 和 Runnable 接口进行并行执行 - http://automationtestinghub.com/appium-parallel-execution/

      【讨论】:

        【解决方案4】:

        如果您在谈论 GUI,我猜您的环境是 Windows?然后你可以使用以下批次:

        @ECHO OFF
        
        cd "C:\Program Files (x86)\Appium\node_modules\appium"
        
        node server.js --app "<path-to-your-project>\bin\<app-name>.apk" -p <port-to-listen-on> -dp <device-port-to-connect-to-device-on>
        

        有了这个,你应该能够启动两个不同的 Appium 服务器并并行使用它们。

        如需所有可用命令的完整列表,请输入node server.js --help

        如果您通过 npm 安装 Appium,则 server.js 的路径将类似于“C:\Users\\AppData\Roaming\npm\node_modules\appium”。

        【讨论】:

        • 对于 Appium 1.4.0,cd "C:\Program Files (x86)\Appium\node_modules\appium" 路径不再包含 server.js。
        【解决方案5】:

        对于多个 android 设备,使用参数启动您的 appium 服务器:

        • 节点appium.js -p 4476 -U &lt;device1_serial&gt;
        • 节点appium.js -p 4475 -U &lt;device2_serial&gt;

        您可以选择任何端口,但请确保它们不同 在您创建驱动程序的代码中,提供服务器 url:

        server1_url = "http://127.0.0.1:4475/wd/hub"
        server2_url = "http://127.0.0.1:4476/wd/hub"
        

        完成。

        【讨论】:

          猜你喜欢
          • 2011-11-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-27
          相关资源
          最近更新 更多