zoukankan      html  css  js  c++  java
  • 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 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'])  # 37
    print(data['spouse']['name'])  # Jane Smith
    print(data['spouse']['age'])  # 25
    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'])  # 15
    print(data['childen'][1]['name'])  # Jenny Smith
    print(data['childen'][1]['age'])  # 12

     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:Appcsca3.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)
  • 相关阅读:
    [WF4.0 实战] AutoResetEvent具体解释(线程独占訪问资源)
    linux下getrlimit与sysconf函数
    36.怎样使用定时任务
    1016. 部分A+B (15)
    找你妹+ipad+wifi,回顾那年的经典游戏
    Oracle 外键约束子表、父表
    字符串 上
    LeetCode103 BinaryTreeZigzagLevelOrderTraversal(二叉树Z形层次遍历) Java题解
    jquery ajax參数加点号状态200进error
    泛型数组随机排列工具类
  • 原文地址:https://www.cnblogs.com/zouzou-busy/p/11439259.html
Copyright © 2011-2022 走看看