频道栏目
首页 > 资讯 > 其他综合 > 正文

Appium控制多台安卓设备执行实现教程

18-06-26        来源:[db:作者]  
收藏   我要投稿

环境:win7 appium-desktop 夜神模拟器(多开器)

前言:在浏览了testerhome社区大量的关于Appium-grid的实现方式,鉴于博主刚刚入门appium,水平有限,还没有到去修改appium源码的能力,另外理想的情况实现应该是全命令行实现驱动appium server,然后模拟器执行测试,后面会继续研究更理想的情况

夜神配置多安卓模拟器

安装新版的夜神模拟器之后,桌面上会有一个多开器的工具,添加一个新的安卓设备,可以直接复制之前已经安装的模拟器,这里博主已经启动了两个模拟器。如下图所示

这里写图片描述

查看设备信息

使用adb devices查看设备信息如下

这里写图片描述

这里端口号62001的对应安卓版本4.4.2的设备,端口号62025的对应安卓5.1.1的设备

定向安装apk

因为此时我们连接了两台设备,那么我们就不能直接使用adb install path.apk的命令安装apk了,会报错如下

这里写图片描述

我们需要指定设备信息进行安装apk,指令如下

adb -s deviceName install path.apk

这里博主以在安卓5.1设备安装chrome浏览器为例,安装过程及成果结果展示:

这里写图片描述

Appium server配置

这里博主是使用appium-desktop,然后提前配置两个appium server的设备信息,启动appium客户端后,我们点击Advanced进行配置,这里有三个大模块包括General ios 和Android,请大家自行选择,这里博主使用安卓设备。

设备1:

General Server Port 4723

Android Bootstrap Port 4724

设备2:

General Server Port 4725

Android Bootstrap Port 4726

每一次配置之后都要点击页面上的“Save as preset..”按钮

这里写图片描述

点击Presets查看配置信息如下图所示:

这里写图片描述

可以看到我们的配置信息以及修改点。

启动Appium Server

如果已经把Appium的启动目录添加到环境变量中,可以直接输入appium启动,或者直接桌面上启动两个appium,或许是博主设备比较差,启动appium-desktop的时间比较久,启动两个appium-desktop之后,分别进入Presets,选中服务器然后启动服务,如下图箭头所示:

这里写图片描述

启动成功后,会看到如下的信息:

这里写图片描述

客户端代码设计

博主的实现思路是使用python多线程的方式,多线程的介绍可以去看虫师写的博客: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:62025',
    'platformVersion':'5.1.1',
    'appPackage':'com.taobao.taobao',
    'appActivity':'com.taobao.tao.welcome.Welcome',
}

desired_caps2 = {
    'platformName':'Android',
    'deviceName':'127.0.0.1:62001',
    '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()

因为我们有两台安卓设备,自然配置信息要区分一下,我们把两个任务加到线程组中,然后启动整个项目。这里代码以打开淘宝应用为例。

最终效果

最终的实现效果如下图Gif所示

这里写图片描述

相关TAG标签
上一篇:c++用代码实现学校运动会管理系统
下一篇:Spring Boot 自动配置原理application.properties的教程
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站