在小红薯运行我们的分布式移动自动化 Cartier 项目的时候,我们经常需要根据一些不同的条件来筛选一批在部署在 STF 上符合要求的设备,并做为启动参数传入到我们的自动化框架中,实现 Android 设备的并行自动化。例如所有三星的机器,所有 Android 操作系统版本大于 5.0 的机器等。为了解决这个问题,我们实现了一个简单的 Python 模块来支持针对 STF 的 Restful 接口的返回结果进行高效方便的查询。相信很多在使用 STF 的团队也会和我们有一样的困扰,我们把这个项目开放给社区的同学使用,也希望可以收集到更多大家的需求,把这个工具做的越来越好
项目地址:https://github.com/RedQA/stf-selector
下面是 STF 常见的返回一部手机信息
{'devices': [
{
'status': 3,
'product': 'R9PlusmA',
'browser': {
'selected': True,
'apps': [{}]
},
'reverseForwards': [],
'battery': {},
'statusChangedAt': '2016-10-21T13: 29: 16.111Z',
'operator': ',',
'owner': None,
'airplaneMode': False,
'presenceChangedAt': '2016-10-22T03: 28: 40.586Z',
'ready': True,
'using': False,
'serial': '778d4f10',
'createdAt': '2016-10-21T12: 30: 24.250Z',
'sdk': '22',
'network': {},
'remoteConnect': False,
'abi': 'arm64-v8a',
'remoteConnectUrl': None,
'platform': 'Android',
'version': '5.1.1',
'present': False,
'provider': {
'name': 'red-Inspiron-3647',
'channel': 'O1HNR2n6Q+iWYV2YAEZRhw=='
},
'model': 'R9PlusmA',
'manufacturer': 'OPPO',
'display': {
'secure': True,
'height': 1920,
'width': 1080
},
'channel': 'a/nbaUCQMduULvq/8HeNTwtCWNs=',
'phone': {}
}
]
}
pip 安装:
$ pip install stf-selector
或者从 GitHub下载解压缩安装:
$ python setup.py install
根据 STF 的 API,首先需要一个 token,如何获取这个 token,可以参考 Authentication.获取完 token 以后,把 STF 和 token 赋值。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from stf_selector.selector import Selector
from stf_selector.query import where
# Your STF's url, like: https://stf.example.org/api/v1/user
url = ""
# Token genereated from the STF, some like:"3e5dd447c..."
token = ""
s = Selector(url=url, token=token)
device_list = s.load().devices()
s = Selector(url=url, token=token)
s.load()
device_list = s.find(where("manufacturer")=="SAMSUNG").devices()
s = Selector(url=url, token=token)
s.load()
conds = (where("manufacturer")=="SAMSUNG") & (where('version')=='5.0')
device_list = s.find(conds).devices()