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

来源:互联网 发布:java爬虫和python爬虫 编辑:程序博客网 时间:2024/05/18 15:27

环境: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 webdriverimport timeimport threadingdesired_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所示
这里写图片描述

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 数字 幼儿绘本 小布叮怎么下载故事 小布叮早教机 优的 优 优 良优 优6suv 优瑞克林 优希真琴 优思w2019真实使用结果 优思版手机什么意思 优思w2018千万别买 三星优思版手机什么意思 手机优思版是什么意思 优思灵 优思手机质量怎么样 优思版 忧思 优思月 忧思手机 优思手机 优思手机怎么样 优斯 优思家教网 优思手机电池 优思手机产地 优恩 优然 霍深深程恪 ihg优悦会 优悦会 海底捞优惠 优惠购 优惠促销 优惠 教育优惠 加油优惠 优惠卷 加油站优惠