• Appium+Java多台设备连接时实现设备切换


    参考:
    Appium-控制多台安卓设备执行的入门级实现


    1. 配置多台安卓模拟器

    使用夜神模拟器的夜神多开器配置两台安卓模拟器并全部启动。
    在这里插入图片描述

    2. 使用命令行查看设备信息

    cmd中输入adb devices

    在这里插入图片描述
    可以看到连接上了两台安卓设备,若需要知道端口号与设备的对应关系,可以关闭一台安卓模拟器,再运行adb devices

    这里我们关闭了夜神模拟器的模拟器,如下图所示。
    在这里插入图片描述
    在这里插入图片描述
    端口号为62001的设备状态为offline,可见名称为夜神模拟器的模拟器,其端口号为62001。

    3. Appium server设置与启动

    打开两个cmd。

    其中一个cmd输入:

    appium -p 4723 -U 127.0.0.1:62001 -bp 4724
    
    • 1

    含义是:

    • 设置Server Port为4723。
    • 设置UDID为127.0.0.1:62001。
    • 设置Android Bootstrap Port为4724。

    另一个cmd输入:

    appium -p 4725 -U 127.0.0.1:62025 -bp 4726
    
    • 1

    含义是:

    • 设置Server Port为4725。
    • 设置UDID为127.0.0.1:62025。
    • 设置Android Bootstrap Port为4726。

    如图所示:
    在这里插入图片描述
    这样就完成了两个Appium Server的启动。

    4. 实现多台设备切换

    在脚本中通过对URL的修改,可以实现设备的切换。
    (注意:脚本中的deviceName无论写什么,Appium都是使用的adb lists devices中的第一个。因此有些博客通过修改deviceName来实现设备的切换的做法是无效的)

    首先将URL设置为http://127.0.0.1:4723/wd/hub
    在这里插入图片描述
    执行脚本效果为:

    http://127.0.0.1:4723/wd/hub测试

    然后将URL设置为http://127.0.0.1:4725/wd/hub

    在这里插入图片描述

    执行脚本效果为:

    http://127.0.0.1:4725/wd/hub测试

    5. 两台设备共同执行

    这里给出Python代码

    #coding=utf-8
    '''
    Created on 2017/12/24 0024
    @author:Changge
    '''
    
    from appium import webdriver
    import time
    import threading
    
    desired_caps = {
        'platformName':'Android',
        'deviceName':'127.0.0.1:62001',
        'platformVersion':'5.1.1',
        'appPackage':'com.taobao.taobao',
        'appActivity':'com.taobao.tao.welcome.Welcome',
    }
    
    desired_caps2 = {
        'platformName':'Android',
        'deviceName':'127.0.0.1:62025',
        'platformVersion':'4.4.2',
        'appPackage':'com.taobao.taobao',
        'appActivity':'com.taobao.tao.welcome.Welcome',
    }
    def task1():
        driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
        ##休眠20s等待页面加载完成
        time.sleep(20)
        print(driver.contexts)
        driver.quit()
    
    def task2():
        driver = webdriver.Remote('http://127.0.0.1:4725/wd/hub', desired_caps2)
        ##休眠20s等待页面加载完成
        time.sleep(20)
        print(driver.contexts)
        driver.quit()
    
    threads = []
    t1 = threading.Thread(target=task1)
    threads.append(t1)
    
    t2 = threading.Thread(target=task2)
    threads.append(t2)
    
    if __name__ == '__main__':
        for t in threads:
            t.start()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
  • 相关阅读:
    外汇天眼:如果你想成为前5%的交易者
    第三章《数组与循环》第8节:数组与循环经典例题
    linux硬盘挂载(linux 修改某个磁盘挂载到新目录\lvm扩容)
    GIS原理篇 地图投影
    002 fanout
    kafka的安装与简单使用
    加固平板电脑在无人机的应用|亿道三防onerugged
    【2023秋招面经】4399 前端 一面-部门初面(26min)
    金仓数据库 KingbaseGIS 使用手册(6.5. 几何对象编辑函数)
    MFC Windows 程序设计[327]之表格控件例程三(附源码)
  • 原文地址:https://blog.csdn.net/mahoon411/article/details/125372786