Android中的多设备支持

eh57zj3b  于 2023-04-28  发布在  Android
关注(0)|答案(6)|浏览(187)

我试图在Andriod平台的多个设备上运行脚本,但我无法运行。我通过Github页面寻找解决方案,并找到了以下关于Support multiple (Android) devices from a single Appium server的链接
但是,我仍然无法弄清楚多个设备的安装环境。

xwbd5t1u

xwbd5t1u1#

下面的代码将帮助你。
//从单个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
    }
}
h7wcgrx3

h7wcgrx32#

在多个设备上运行appium脚本
1.您必须启动appium服务器,根据不同端口号的设备数量。
1.用你喜欢的语言(java,ruby)创建每个端口的驱动程序示例
1.同时运行这些脚本。
1.您也可以创建基于线程的程序,这将创建不同的驱动程序示例。
在这里我创建了一个简单的java线程程序
https://github.com/sameer49/Appium-Grid-For-Android

8ljdwjyq

8ljdwjyq3#

对于在多个Android设备上的顺序或并行执行,我们需要-
1.为每个设备或模拟器提供单独的Appium示例
1.对于每个设备/Appium示例,为Appium端口、Bootstrap端口、设备ID(即UDID,而不是设备名称)提供不同的值
1.如果在应用程序上使用Chrome浏览器,请提供不同的Chrome驱动程序端口
查看下面的帖子,它使用Java线程和Runnable接口进行并行执行-http://automationtestinghub.com/appium-parallel-execution/

vlurs2pr

vlurs2pr4#

如果你说的是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”。

eaf3rand

eaf3rand5#

对于多个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"

好了

brccelvz

brccelvz6#

我只是使用uidi而不是uuid,然后我可以连接到多个设备只有一个appium服务器

相关问题