前戏

YAML 语言的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。

它的基本语法规则如下。

  • YAML大小写敏感;
  • 使用缩进代表层级关系;
  • 缩进只能使用空格,不能使用TAB,不要求空格个数,只需要相同层级左对齐(一般2个或4个空格)

# 表示注释,从这个字符一直到行尾,都会被解析器忽略。

YAML 支持的数据结构有三种。

对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)

纯量(scalars):单个的、不可再分的值

数组

一组连词线开头的行,构成一个数组。

- Cat
- Dog
- Goldfish

转为 python 如下。
[ 'Cat', 'Dog', 'Goldfish' ]

对象

对象的一组键值对,使用冒号结构表示。
animal: pets

冒号后面一定要有空格

转为 JavaScript 如下。

{ animal: 'pets' }

python读取yaml

安装PyYAML库

pip install PyYAML

数据场景:

Tom Smith37岁,他有一个妻子Jane Smith,25岁,另外他有两个孩子,一个叫Jimmy Smith,15岁。另外一个叫Jenny Smith,12岁

family.yaml

name: Tom Smith
age: 37
spouse:
name: Jane Smith
age: 25
childen:
- name: Jimmy Smith
age: 15
- name: Jenny Smith
age: 12

python文件读取

import yaml

file = open('family.yaml', "r")
data = yaml.load(file, Loader=yaml.FullLoader)
print(data)
# {'name': 'Tom Smith', 'age': 37, 'spouse': {'name': 'Jane Smith', 'age': 25}, 'childen': [{'name': 'Jimmy Smith', 'age': 15}, {'name': 'Jenny Smith', 'age': 12}]} print(data['name']) # Tom Smith
print(data['age']) #
print(data['spouse']['name']) # Jane Smith
print(data['spouse']['age']) #
print(data['childen']) # [{'name': 'Jimmy Smith', 'age': 15}, {'name': 'Jenny Smith', 'age': 12}]
print(data['childen'][0]['name']) # Jimmy Smith
print(data['childen'][0]['age']) #
print(data['childen'][1]['name']) # Jenny Smith
print(data['childen'][1]['age']) #

python数据类型转为yaml格式

上面我们使用了yaml.load从yaml里读取,转为python的类型,我们可以使用dump把python类型的转为yaml类型

import yaml

lis = ['name', 'age', 'job']
dic = {'IT':'test', 'dev':'ui'} print(yaml.dump(lis))
print(yaml.dump(dic))

结果:

- name
- age
- job IT: test
dev: ui

把python的数据类型写入yaml文件

import yaml

lis = {'name': 'Tom Smith', 'age': 37, 'spouse': {'name': 'Jane Smith', 'age': 25},
'childen': [{'name': 'Jimmy Smith', 'age': 15}, {'name': 'Jenny Smith', 'age': 12}]} dic = {'IT': 'test', 'dev': 'ui'}
with open('family.yaml', 'w') as f:
f.write(yaml.dump(lis))
f.write(yaml.dump(dic))

结果:

将Capability封装成yaml配置文件

desired_caps.yaml

platformName: Android  # 注意要有空格
platforVersion: 9.1.1
deviceName: 127.0.0.1:62001
app: F:\App\csca3.1.0.apk
appPackage: com.csca
appActivity: com.csca.ui.activity.SplashActivity
noReset: False
ip: 127.0.0.1
port: 4723

读取配置文件yaml里的内容

import yaml
from appium import webdriver file = open('desired_caps.yaml', 'r')
data = yaml.load(file, Loader=yaml.FullLoader) desired_caps = {}
desired_caps['platformName'] = data['platformName']
desired_caps['platforVersion'] = data['platforVersion']
desired_caps['deviceName'] = data['deviceName']
desired_caps['app'] = data['app']
desired_caps['appPackage'] = data['appPackage']
desired_caps['appActivity'] = data['appActivity']
desired_caps['noReset'] = data['noReset'] driver = webdriver.Remote('http://' + str(data['ip']) + ':' + str(data['port']) + '/wd/hub', desired_caps)

appium--使用PyYAML封装Capability的更多相关文章

  1. Appium的Java封装

    文章出处 http://blog.csdn.net/niubitianping/article/details/52612211 一.为什么需要封装? 封装的本意就是为了方便.简洁. 二.Androi ...

  2. Appium脚本(3):sendkey(封装capability)

    输入中文注意添加这个配置,否正中文输入不了desired_caps['unicodeKeyboard'] = "True"desired_caps['resetKeyboard'] ...

  3. appium自动化测试框架——封装获取设备信息类

    在上一节中,我们已经解决了如何在python中执行cmd,并获取执行结果.下面就小小实战一下,获取设备信息. 一.思路 1.windows上获取设备信息的方法 输入dos命令“adb devices” ...

  4. Python +appium 封装desired_caps模块

    使用python+appium做android的自动化测试时,首先需要启动appium服务,然后连接上手机,配置如下: desired_caps = {"platformName" ...

  5. Appium自动化测试框架

    1.在utils包中创建一个AppiumUtil类,这个类是对appium api进行封装的. 代码如下: package utils; import java.net.MalformedURLExc ...

  6. 『与善仁』Appium基础 — 10、Appium基本原理

    目录 1.Appium自动化测试架构 2.Appium架构图 3.Session说明 4.Desired Capabilities说明 5.Appium Server说明 6.Appium Clien ...

  7. 手机自动化测试:appium源码分析之bootstrap九

    手机自动化测试:appium源码分析之bootstrap九   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣, ...

  8. Appium环境搭建-精简版

    Appium自动化环境准备 安装配置JDK 下载Android SDK并配置环境变量 安装模拟器或连接真机 安装appium desktop 安装python和pycharm (开发语言和开发工具) ...

  9. Appium学习笔记4_元素定位方法

    Appium之元素定位,如果对Android上如何使用工具获取页面元素有问题的,请转战到这:http://www.cnblogs.com/taoSir/p/4816382.html. 下面主要是针对自 ...

随机推荐

  1. 怎么才能从github上面快速clone代码

    搜了很多教程,包括该本地host配置.在git上输入命令.使用githubdesktop等等方法,最后都不行,这位朋友讲的,先把仓库clone到码云上面,再从码云上面拉代码,速度会非常快. 传送门 g ...

  2. 浅谈状态压缩DP

    浅谈状态压缩DP 本篇随笔简单讲解一下信息学奥林匹克竞赛中的状态压缩动态规划相关知识点.在算法竞赛中,状压\(DP\)是非常常见的动规类型.不仅如此,不仅是状压\(DP\),状压还是很多其他题目的处理 ...

  3. 【51nod1678】lyk与gcd(莫比乌斯反演+枚举因数)

    点此看题面 大致题意: 一个长度为\(n\)的数组,实现两种操作:单点修改,给定\(i\)求\(\sum_{j=1}^na_j[gcd(i,j)=1]\). 莫比乌斯反演 考虑推一推询问操作的式子: ...

  4. onload()方法只能在body标签中调用吗?怎么调用多个多个方法?

    第一个问题: onload()方法并非只能在body标签中调用的,还可以在js中用window.onload = function() {函数名};来调用:另外img等标签也支持onload方法. 支 ...

  5. golang数据结构之散哈希表(Hash)

    hash.go package hash import ( "fmt" ) type Emp struct { ID int Name string Next *Emp } //第 ...

  6. numpy的一点学习

    1.Numpy模块 NumPy是Python中的一个运算速度非常快的一个数学库,它非常重视数组.它允许你在Python中进行向量和矩阵计算,并且由于许多底层函数实际上是用C编写的,因此你可以体验在原生 ...

  7. 多模块springboot项目启动访问不了jsp页面

    被springboot项目maven打包.启动.访问折腾的头都大了,一步一个坑,在解决了所有的问题之后,那种欣喜若狂的心情只有自己能体会,决定要好好记录一下了,废话不多说了,直接进入正题. 问题和排查 ...

  8. Bag of Tricks for Image Classification with Convolutional Neural Networks

    这篇文章来自李沐大神团队,使用各种CNN tricks,将原始的resnet在imagenet上提升了四个点.记录一下,可以用到自己的网络上.如果图片显示不了,点击链接观看 baseline mode ...

  9. GO的执行原理以及GO命令

    Go的执行原理以及Go的命令 一.Go的源码文件 Go 的源码文件分类: 如上图,分为三类: 1.命令源码文件: 声明自己属于 main 代码包.包含无参数声明和结果声明的 main 函数. 命令源码 ...

  10. Linux 网络相关命令 Cheat Sheet

    以下漫画形式呈现的常用 Linux 网络相关命令速查表来自 twitter -