appium--使用PyYAML封装Capability

网友投稿 299 2022-08-25


appium--使用PyYAML封装Capability

前戏

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 Smithage: 37spouse: name: Jane Smith age: 25childen: - name: Jimmy Smith age: 15 - name: Jenny Smith age: 12

python文件读取

import yamlfile = 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 Smithprint(data['age']) # 37print(data['spouse']['name']) # Jane Smithprint(data['spouse']['age']) # 25print(data['childen']) # [{'name': 'Jimmy Smith', 'age': 15}, {'name': 'Jenny Smith', 'age': 12}]print(data['childen'][0]['name']) # Jimmy Smithprint(data['childen'][0]['age']) # 15print(data['childen'][1]['name']) # Jenny Smithprint(data['childen'][1]['age']) # 12

python数据类型转为yaml格式

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

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

结果:

- name- age- jobIT: testdev: ui

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

import yamllis = {'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.1deviceName: 127.0.0.1:62001app: F:\App\csca3.1.0.apkappPackage: com.cscaappActivity: com.csca.ui.activity.SplashActivitynoReset: Falseip: 127.0.0.1port: 4723

读取配置文件yaml里的内容

import yamlfrom appium import webdriverfile = 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('+ str(data['ip']) + ':' + str(data['port']) + '/wd/hub', desired_caps)


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:requests--发送请求(requests发送请求格式)
下一篇:Java实现学生管理系统(IO版)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~