项目的由来

在小红薯运行我们的分布式移动自动化 Cartier 项目的时候,我们经常需要根据一些不同的条件来筛选一批在部署在 STF 上符合要求的设备,并做为启动参数传入到我们的自动化框架中,实现 Android 设备的并行自动化。例如所有三星的机器,所有 Android 操作系统版本大于 5.0 的机器等。为了解决这个问题,我们实现了一个简单的 Python 模块来支持针对 STF 的 Restful 接口的返回结果进行高效方便的查询。相信很多在使用 STF 的团队也会和我们有一样的困扰,我们把这个项目开放给社区的同学使用,也希望可以收集到更多大家的需求,把这个工具做的越来越好

项目地址:https://github.com/RedQA/stf-selector

STF 的返回格式

下面是 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': {}
            }
            ]
            }

常见的需求

  1. 需要所有 sdk 大于 19 的设备
  2. 需要所有三星的设备
  3. 需要 sdk 大于 21,并且是三星的手机
  4. 需要 display 的 height 是 1920,width 是 1080 的手机

环境需求

轻松使用

安装 stf-selector

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()


↙↙↙阅读原文可查看相关链接,并与作者交流