python+appium学习总结
经过了这个月的学习,今天终于完成了公司APP系统的自动化的脚本的编写。
通过单元测试框架UNITTEST,进行脚本的连跑,本来还想把测试数据统一写到EXCEL表格内,实现脚本与数据的分离。
后来发现增加了很多的工作量,这个时间投入的不值得,性价比不高。
因为使用的是APPIUM在模拟器中操作,所以脚本运行速度,远不及selenium运行速度快,同时,维护难度增加,脚本连跑时,因为受到系统影响,
连跑报错率很高,需要多跑几次,才能全部跑通。
最近把时间与精力都投入到APPIUM+python的学习上。发现难度一开始就在环境的搭建上,环境虽然是有固定的操作步骤,
但是要求对APP或CS架构有一定的基础知识,需要了解安卓的SDK,IOS的相关知识。
同时,定位难度也明显高于selenium的谷哥开发者工具,APPIUM我使用的是UIautomator viewer定位工具,用起来非常的不方便,最头疼的不是定位的方法,而是一碰到
页面有动态元素,ui automator viewer就报错。
中途也听说了也可以翻墙用谷哥的开发者工具来定位,自己还没有尝试,不下结论。
后期会尝试一下。
我讨厌我现在用的五笔输入法,真的很烂。测试肯定没有测试到位。
下面说一下,我用python+appium做自动化的时候,主要的实现步骤以及自己的思路。
前提是环境,模拟器等都正常工作了。
首先:先写一段脚本,根据系统的一个子模块,或者其中的一个流程(这个流程是后期整个自动化的一个demo,是一个雏形)
其次:再写第一个demo的时候,基本上可以确定哪些地方可以参数化,(既可以用函数来实现,哪些地方写死。个人理解,自动化,核心是unittest框架,可以组织,执行,判断用例等。其次,最重要的就是参数化了。剩下就是复制脚本,维护脚本了。脚本的范围根据实际需求来)
再次:根据已写好的脚本,完成剩下的自动化脚本的编写,其中不断完善,提高,维护,直到满意,合格为止。(看样子要求真低)
我操作的时候,每次写好一个完整的脚本,都会测试跑一遍,就是这样反复多次,不断调试,不断优化,最终合格为止。
总结:
1,根据需求,确定自动化的范围。
2,根据范围编写脚本,确定参数化对象。
3,通过unittest单元测试框架,组织,执行,判断用例。
4,得出报告,发现问题。
5,持续集成,(此步骤在公司没有操作,只有我一个自动化测试,另外开发用的是JAVA语言,我用的是python语言)
另外,appium没有把数据与脚本进行分离,主要考虑性价比不高,脚本没有pc端开发的脚本稳定,为了减少错误,就没有操作这一步。(这一步有好处与不好的地方,具体自己权衡。)
python+appium学习总结的更多相关文章
- Python+Appium学习之启动手机APP或者浏览器
一.启动浏览器:pycharm中python脚本如下: from appium import webdriver desired_caps ={ 'platformName':'Android', ' ...
- Python+Appium学习篇之WebView处理
1.认识WebView 实例说明: 当你打开百度阅读APP→VIP全站去广告→用自带的 UI Automator去定位里面的元素,如图: 不管你去定位 '规则详情' '开通'等等,都会定位不到,只 ...
- python+appium学习之swipe
#coding:utf-8 from appium import webdriver from time import sleep import random desired_caps={ " ...
- Appium学习实践(二)Python简单脚本以及元素的属性设置
1.简单的Python脚本 Appium中的设置与Appium学习实践(一)简易运行Appium中的一致 Launch后,执行脚本 #coding:utf-8 import unittest impo ...
- Appium学习实践(三)测试用例脚本以及测试报告输出
之前Appium学习实践(二)Python简单脚本以及元素的属性设置中的脚本,会有一个问题,就是在每个测试用例完成之后都会执行tearDown,然后重新setUp,这样导致脚本的执行效率偏低,而且会有 ...
- Python appium搭建app自动化测试环境
appium做app自动化测试,环境搭建是比较麻烦的. 也是很多初学者在学习app自动化之时,花很多时间都难跨越的坎. 但没有成功的环境,就没有办法继续后续的使用. 在app自动化测试当中,我们主要是 ...
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- 60分钟Python快速学习(给发哥一个交代)
60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空 ...
- python爬虫学习(1) —— 从urllib说起
0. 前言 如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力 因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫 所以建议先学习一下cuiqingcai大神的 Pyth ...
随机推荐
- [CSP-S模拟测试50]反思+题解
??大部分人都觉得T3是道不可做题去刚T1T2了,于是我就侥幸苟到了前面? 这场考试比较成功的就是快速水掉了T1T2的部分分,1h拿到88分起码为之后硬肝T3上了保险(赛后发现就算T3爆零也能rank ...
- Http协议面试题(总结)
Http协议面试题(总结) 一.总结 一句话总结: 主要考常见的状态码,以及https,其它的多抓抓包就熟悉了 1.说一下什么是Http协议? 数据传输的格式规范:对器客户端和 服务器端之间数据传输的 ...
- JAVA 大数开方模板
JAVA 大数开方模板 import java.math.BigInteger; import java.math.*; import java.math.BigInteger; import jav ...
- QT中用QStettings生成INI文件来记录QFileDialog::getOpenFileName上次的打开路径
QSettings setting("./Setting.ini", QSettings::IniFormat); //QSettings能记录一些程序中的信息,下次再打开时可以读 ...
- Java + selenium 元素定位(2)之By LinkText/PartialLinkText
本章介绍的两种方法都是对于网页上的文字链接的定位操作.根据名字,我们就可以看出来,这两者其实很相似,那么他们的不同在哪里呢. By LinkText()方法,是对一个的网页超链接,我们所需要输入的关键 ...
- jQuery判断checkbox是否选中及获取选中值
方法一:if ($("#checkbox-id")get(0).checked) { // do something} 方法二:if($('#checkbox-id').is ...
- 浅析java设计模式(一)----异构容器,可以存储任何对象类型为其他类提供该对象
最近在着手重构一个java UI桌面项目,发现这个项目在一开始的时候由于需求不明确,以及开发人员对swing框架不熟悉等问题造成了页面代码混乱的情况:为了能够在各个类里都可以拿到其他类的引用去进行相应 ...
- 用MR生成HFile文件格式后,数据批量导入HBase
环境hadoop cdh5.4.7 hbase1.0.0 测试数据: topsid uid roler_num typ 10 111111 255 0 在Hbase 创建t2数据库: create ...
- Vue.config.silent = true
Vue.config vue的全局配置文件 silent默认值是false Vue.config.silent = true 取消Vue所有的日志和警告
- python内存管理及垃圾回收
一.python的内存管理 python内部将所有类型分成两种,一种由单个元素组成,一种由多个元素组成.利用不同结构体进行区分 /* Nothing is actually declared to b ...