安卓中的多设备支持

4
我正在尝试在多个安卓设备上运行脚本,但是我无法运行。我查看了Github页面以寻求解决方案,并找到了以下关于从单个Appium服务器支持多个(Android)设备的链接。但是,我仍然无法弄清楚如何为多个设备设置环境。

你尝试过什么?展示一下你目前的进展,这样我们可能可以帮助你。 - Marek Sebera
在GUI中并行启动两个Appium服务器,但它们没有运行。我不知道如何在终端中运行,请帮助我如何在多个设备上运行单个项目脚本。 - Mani
6个回答

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
    }
}

1

要在多个Android设备上进行顺序或并行执行,我们需要 -

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

请查看下面的帖子,该帖子使用Java线程和可运行接口进行并行执行 - http://automationtestinghub.com/appium-parallel-execution/


1

要在多个设备上运行appium脚本:

  1. 您需要根据设备数量启动相应数量的appium服务器,并使用不同的端口号。
  2. 用您偏爱的语言(如java、ruby)为每个端口创建驱动程序实例。
  3. 同时运行这些脚本。
  4. 您还可以创建基于线程的程序,该程序将创建不同的驱动程序实例。

这里我创建了一个简单的基于Java线程的程序。

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


0

对于多个Android设备,请使用以下参数启动您的Appium服务器:

  • node appium.js -p 4476 -U <device1_serial>
  • node appium.js -p 4475 -U <device2_serial>

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

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

完成。


0

如果你在谈论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文件。 - Vish

0

我只需使用uidi而不是uuid,就可以通过一个Appium服务器连接多个设备。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接