• 0
  • 0
分享
  • Appium综合实践(1)-driver的封装(capability)
  • 豆秸 2022-07-08 09:02:04 字数 2469 阅读 2127 收藏 0

读取yaml配置文件:

有两种方式,一个是file open,一个是with open

方式1

file = open('../config/WiFibanlv_caps.yaml', 'r')
data = yaml.load(file)
file.close() #必须使用close,否则文件会出现占用情况

方式2:

with open('../config/WiFibanlv_caps.yaml', 'r', encoding='utf-8') as file: 
    data = yaml.load(file)

安装包的相对路径使用方法:

步骤1:先导入对应的模块import os

步骤2:找到当前文件的目录,使用方法os.path.driname(__file__)

步骤3:根据当前文件目录,找到上一级目录,以此类推

步骤4:拼接安装包所在的路径

if __name__ == '__main__':
with open('../config/WiFibanlv_caps.yaml', 'r', encoding='utf-8') as file:
     data = yaml.load(file)
base_dir=os.path.dirname(os.path.dirname(__file__))#os.path.dirname(__file__)表示获取当前文件的路径
print(os.path.dirname(__file__))
print(base_dir)
app_path=os.path.join(base_dir, 'app',data['appname'])
#join是表示把几个路径拼接起来,
#将base_dir和app文件夹拼接起来,然后找到app文件夹下面的的apk文件名称
print(app_path)

完整脚本:

  • 定义yaml配置文件

投11.png

  • 定义log、conf文件

投12.png

  • 封装capability启动app的脚本desired_caps.py

#!urs/bin/python
#!_*_ coding:UTF-8 _*_
from appium import webdriver
import yaml
import  logging
import logging.config
import os
 
#日志配置文件
CON_LOG='../config/log.conf'
logging.config.fileConfig(CON_LOG)
logging=logging.getLogger()
def appium_desired():
    #读取配置文件的数据,有两种方式
 
    #方式1,必须以close结尾
    file = open('../config/WiFibanlv_caps.yaml', 'r')
    data = yaml.load(file)
    file.close() #必须使用close,否则文件会出现占用情况
 
    #方式2
    with open('../config/WiFibanlv_caps.yaml', 'r', encoding='utf-8') as file:
        data = yaml.load(file)
 
 
    logging.info("Initialize  APP...")
    desired_caps = {}
    desired_caps['platformName'] = data['platformName']
    desired_caps['platformVersion'] = data['platformVersion']
    # 第一个模拟器默认127.0.0.1:62001  第二个默认:127.0.0.1:62025
    desired_caps['deviceName'] = data['deviceName']
    #定义apk安装包的相对路径
    base_dir = os.path.dirname(os.path.dirname(__file__))  # os.path.dirname(__file__)表示获取当前文件的路径
    app_path = os.path.join(base_dir, 'app', data['appname'])
    desired_caps['app'] = app_path
 
 
    desired_caps['packageName'] = data['packageName']
    desired_caps['appActivity'] = data['appActivity']
    desired_caps['noReset'] = data['noReset']
    desired_caps['unicodekeyboard'] = data['unicodekeyboard']
    desired_caps['resetkeyboard'] = data['resetkeyboard']
    desired_caps['uiautomationName'] = data['uiautomationName']
    logging.info("Start APP...")
    driver = webdriver.Remote('http://' + str(data['ip']) + ':' + str(data['port']) + '/wd/hub', desired_caps)
    driver.implicitly_wait(8)
    return driver

    #调试当前脚本方法
if __name__ == '__main__':
    appium_desired()

每封装一个模块,都要引用__mian__检测下当前脚本是否能运行成功,capability封装后运行成功结果如下:

投13.png

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   1、前言  以前待过一个测试组,做过的项目虽然不大,但是里面涉及到很多超链接,于是手动点击这些链接就花费很多时间,后来我就想如果工作觉得累,那肯定有什么地方需要改进,于是我就网上搜索可以检查超链接的自动化工具或方法,结果还真的让我找到了妙法!这就是接下来我要隆重介绍的小巧且好用的工具——Xenu!  2、简介  Xenu 全称 Xenu’s Link Sleuth 是一款界面简单,功能强大的软件,你可以打开一个本地网页文件来检查它的链接,也可以输入任何网址来检查,它可以分别列出网站的活链接以及死链接,连转向链接它都分析得一清二楚,支持多线程,可以把检查结果存储成文本文件或网页文件。  主要...
            0 0 1041
            分享
          • 手把手教你测试微信小程序,附软件测试员必知的20个常见测试点!普通的移动app是需要安装的,但是绝大部分的app不会经常使用,但仍然会占用手机存储空间,所以开始出现免安装app,微信小程序实际是一种免安装的app。类似的比如华为、小米等手机厂商推出的快应用、支付宝小程序。微信小程序实际是运行在微信之上。小程序的类网页经过微信翻译之后以http数据的形式和服务器进行交互。小程序无法脱离微信来进行使用。微信小程序的页面可以包含:小程序页面(WXML+WXSS);M页页面(H5移动网页);toast信息(过一段时间会自动消失的信息,比如登录成功的提示信息,1、2秒后自动消失);弹窗。微信小程序功能测...
            14 15 3629
            分享
          • 安全测试这是一种由特殊团队执行的测试。任何黑客方法都可以渗透系统。进行安全测试以检查软件、应用程序或网站如何免受内部和/或外部威胁。该测试包括有多少软件可以抵御恶意程序、病毒以及授权和身份验证过程的安全性和强度。它还检查软件对任何黑客攻击和恶意程序的行为,以及在此类黑客攻击后如何维护软件以确保数据安全。a) 渗透测试渗透测试或渗透测试是作为对系统的授权网络攻击执行的安全测试类型,以找出系统在安全方面的弱点。渗透测试由外部承包商执行,通常称为道德黑客。这就是为什么它也被称为道德黑客。承包商执行不同的操作,如 SQL 注入、URL 操作、特权提升、会话到期,并向组织提供报告。注意:不要在您的笔记本...
            0 0 841
            分享
          • 从整体的角度可以分为单元测试、集成测试、系统测试、确认测试。下面内容来自网络相关资料的整理:1、单元测试(1)定义:单元测试(又称为模块测试)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。(2)单元测试任务包括:模块接口测试;模块局部数据结构测试;模块边界条件测试;模块中所有独立执行通路测试;模块的各条错误处理通路测试。模块接口测试是单元测试的基础。只有在数据能正确流入、流出模块的前提下,其他测试才有意义...
            0 0 1243
            分享
          •   关于自动化的学习,一直是大家关注的话题,那么Python学习到什么程度就可以进行自动化测试了呢?下面结合我自身的学习历程跟大家分享一下。  初识自动化  刚开始学自动化的时候,是跟着视频课程学习的,当时学习完用Selenium进行脚本录制之后,就觉得自动化测试好简单,录制脚本后回放脚本就行了,所以学完录制脚本之后,就没再往下继续学习,使用Selenium脚本录制的功能进行脚本的录制回放。  结果可想而知,录制脚本时,一个鼠标悬浮事件没有录制上,导致元素找不到,最终整个脚本以失败而告终。  因为随着前台开发技术的不断更新换代,并不是所有的事件、操作都能使用Selenium自动录制上,还需要我...
            0 0 918
            分享
      • 51testing软件测试圈微信