如何使用 Appium 运行 需要两个设备的测试

How to run a test which needs two devices using Appium

我知道为了使用 Appium 控制多个设备,我需要启动多个具有不同端口的 Appium 服务器。但是,当多个设备连接到主机时,我无法了解如何将我的部分测试定位到特定设备。

我明白,为了处理连接到计算机的多个设备,我需要执行以下两个配置。

  1. 端口设置:例如4723 在下面的 webdriver 初始化中

    webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps_first_device)

  2. desired_caps 不同 devices.e.g.

    desired_caps_first_device = {'platformName': 'Android', 'platformVersion': '7.0', 'deviceName': 'gts210velte', 'appPackage':'package_name', 'appActivity':'activity_name'}

我有两个 Android 设备连接到一台机器,并且都是相同的型号(设备名称)。我知道我可以创建两个驱动程序实例,但 Appium 如何知道哪个实例用于哪个物理设备?换句话说,我应该如何区分代码中的两个设备,以便我知道一段代码将在连接到机器的两个设备中的特定设备上执行?

使用 udid 所需的功能以及您需要映射到您喜欢的任何服务器的设备 ID。

可以使用以下命令找到设备的 ID:

$ adb devices

我发现有一个名为 udid 的 属性 可以将 adb 设备 ID 分配给目标特定 android 设备,当多个设备连接到主机时.

例如

device_caps_first_device =  {'platformName': 'Android', 'platformVersion': '7.0', 'udid': 'xxxxxxx', 'deviceName': 'gts210velte', 'appPackage':'package_name', 'appActivity':'activity_name'}

device_caps_second_device =  {'platformName': 'Android', 'platformVersion': '7.0', 'udid': 'yyyyyyy', 'deviceName': 'gts210velte', 'appPackage':'package_name', 'appActivity':'activity_name'}

udid 被定义为在 http://appium.io/docs/en/writing-running-appium/caps/

处连接的物理设备的唯一设备标识符

两个类似的设备用udid区分。

这是与 1 台设备建立连接的示例脚本,您可以查看并修改它以满足您对多台设备的需求。

示例不言自明。

https://automationlab0000.wordpress.com/2018/08/21/first-automation-script-using-robot-framework/