热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于Python语言的Apium使用(一)

一Apium环境搭建1基础环境参考https://www.jianshu.com/p/b19877c4cc322Pyth
一 Apium 环境搭建

1 基础环境

参考 https://www.jianshu.com/p/b19877c4cc32

2 Python+Apium 环境

  • 在基础环境上继续安装。
  • 安装 python –用于编写脚本
  • 安装 Apium Python Client

Apium Client 是对 webdriver 原生 api 的一些扩展和封装。它可以帮助我们更容
易的写出用例,写出更好懂的用例。Apium Client 是配合原生的 webdriver 来使
用的,因此二者必须配合使用缺一不可。

  • pinstal Apium-Python-Client
二 Apium 环境搭建

1 导入包

 from apium iport webdriver 

2 设置 desired_capbiltes

2.1 创建字典

  • 指定移动设备或模拟器的种类,如 iPhone Simulator,iPad Simulator,iPhone、Retina 4-inch,Android Emulator,Galxy S4 等
device['deviceName']=192.168.120.12:55' 
  • 指定移动操作系统平台,如 iOS,Android 或 FirefoxOS
device['platformName']=Android'  
  • 指定移动操作系统版本
device['platformVersion']=9'
  • 指定 app 程序包名
device['apPackage']=com.android.caluator2'
  • 指定启动页的名字
device['apActivy']= com.android.caluator2.Calcuator' 

2.2 启动App

driver=webdriver.Remote("htp:/localhost:4723/wd/hub",device) 

2.3 关闭App

driver.quit()

3 编写测试脚本

  • Apium 启动基础代码
{
"platformName":Android", "deviceName":192.168.120.12:55", "platformVersion":9", "apPackage":com.android.caluator2", #com.android.quicksearchbox
"apActivy":.Calcuator" #com.android.quicksearchbox.SearchActivy
}
  • Apium 点击元素
driver.find_elment_by_id("com.android.caluator2:id/igt_9").clik()
driver.find_elment_by_id("com.android.caluator2:id/op_ad").clik()
driver.find_elment_by_id("com.android.caluator2:id/igt_1").clik()
driver.find_elment_by_id("com.android.caluator2:id/eq").clik()
  • 回车
driver.pes_keycode(6)
  • 指定每次运行测试前不重新安装 App
device['noRest']=True
  • 键盘输入数据
driver.find_elment_by_id("android.widget.EditText").send_keys("数据")
  • 指定 App中可以输入中文
device['unicodeKyboard']= True
device['rsetKeyboard']=True
driver.find_elment_by_id("android.widget.EditText").send_keys(u"中文")

4 断言

res=driver.find_elment_by_clas_name("android.widget.EditText").ext
if res=str(7):
print("测试通过")
els:
print("测试失败")

5 参数化

使用列表

基于 Python 语言的 Apium 使用(一)
使用列表.png
  • 将运算符修改为可识别字符串

    基于 Python 语言的 Apium 使用(一)
    将运算符修改为可识别字符串.png
  • for 循环分离每个数据后参数替换

    基于 Python 语言的 Apium 使用(一)
    for 循环分离每个数据后参数替换.png

读取txt文件

1 打开文件

file=open(文件名,’r)

  • 返回文件对象,文本默认编码方式是 UTF-8。
  • ‘r表示只是读,默认项。

2 遍历文件

  • 按行读出,处理后可存入列表
for 变量 in file

3 关闭文件

  • 释放文件占用的系统资源。
file.close( )

读 excel 文件

1 安装 pandas

  • pip instal -no-index -find-links=包位置 -requiremnts.xt
  • requiremnts.xt 中记录着所有需要的依赖包和版本号
  • 验证是否成功
    • python→import pandas
    • pip list
  • 导入包 import pandas

2 获得数据

data=pandas.read_excl(“xls 文 件 名 “,shet_name=shet 表 编 号 或 名称,names=[新列名列表],dtype={“新列名”:类型},skiprows=跳过数据行的行数,headr=None 表示没有列名)

  • 默认为包含列名
  • 表编号从 0 开始
  • 新列名列表中的列名要加引号
  • 获得全部数据,结果为 DatFrame(字典,列名为关键字)
  • datlist=dat.values.tolist() 返回列表

推荐阅读
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • 本文介绍如何通过 Python 的 `unittest` 和 `functools` 模块封装一个依赖方法,用于管理测试用例之间的依赖关系。该方法能够确保在某个测试用例失败时,依赖于它的其他测试用例将被跳过。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 【实例简介】本文详细介绍了如何在PHP中实现微信支付的退款功能,并提供了订单创建类的完整代码及调用示例。在配置过程中,需确保正确设置相关参数,特别是证书路径应根据项目实际情况进行调整。为了保证系统的安全性,存放证书的目录需要设置为可读权限。值得注意的是,普通支付操作无需证书,但在执行退款操作时必须提供证书。此外,本文还对常见的错误处理和调试技巧进行了说明,帮助开发者快速定位和解决问题。 ... [详细]
  • 如何在PHP中准确获取服务器IP地址?
    如何在PHP中准确获取服务器IP地址? ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 网络爬虫的规范与限制
    本文探讨了网络爬虫引发的问题及其解决方案,重点介绍了Robots协议的作用和使用方法,旨在为网络爬虫的合理使用提供指导。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 利用REM实现移动端布局的高效适配技巧
    在移动设备上实现高效布局适配时,使用rem单位已成为一种流行且有效的技术。本文将分享过去一年中使用rem进行布局适配的经验和心得。rem作为一种相对单位,能够根据根元素的字体大小动态调整,从而确保不同屏幕尺寸下的布局一致性。通过合理设置根元素的字体大小,开发者可以轻松实现响应式设计,提高用户体验。此外,文章还将探讨一些常见的问题和解决方案,帮助开发者更好地掌握这一技术。 ... [详细]
  • Unity与MySQL连接过程中出现的新挑战及解决方案探析 ... [详细]
author-avatar
甜蜜棉羽
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有