python appium自动化,走过的坑

摘要:
这个问题的原因是pytest参数化被错误地用于获取数据,这导致了将数据分成多个部分来获取数据的问题。我们还可以知道有多少测试用例,这不仅取决于项目中有多少个测试用例,还取决于测试用例中使用了多少组测试数据#为什么在应用程序自动化中有这么多陷阱!!!!未来,它将不断更新并投入坑中。

使用的夜神模拟器,使用android5.1.1 或者真机

第一个坑:使用的android7.1.2,刚开始写好了登录的代码,需要的是滑屏进入到登录界面,结果运行的时候,没有自动滑屏就报错;因为运行时,报了一个进程被另一个程序在使用,怀疑是这个原因,又改了在进行滑屏前强行等待了几秒,还是不行;截其他界面的元素,也经常报一个UI的错,百度说这个是android的问题,后来我改了夜神模拟器的版本5.1.1,运行正常,滑屏正常!

第二个坑:自动化运行明明已经点击了元素,却提示找不到元素 (模拟器下)

解决方案是:使用tap()坐标模拟点击屏幕

    :Args:
    - positions - list类型,里面对象是元组,最多五个。如:[(100, 20), (100, 60)]
    - duration - 持续时间,单位毫秒,如:500
self.driver.tap([(949,1434),(1080,1592)],500)

解决方案:使用真机运行代码,看能不能找到元素

第三个:这个不算坑,是自己把之前知识,全部扔进盐水海了;这是就是在使用pytest命令执行的时候,提示“unrecognized arguments: --html=OutPut eport eport.html nofile:None”

问题的根本:没有pytest-html模块,要用allure模块,记得要加allure-pytest

解决方案:添加pytest-html模块 、allure模块

命令:pip install allure-pytest 、pip install pytest-html

第四个:有输入的地方,真机默认会弹出自带的键盘,这个键盘会遮挡住页面下方的元素,导致找不到元素

解决方案:将默认弹出的键盘隐藏

# unicode编码方式发送字符串
desired_caps["unicodeKeyboard"] = "True"
# resetKeyboard是将键盘隐藏起来

desired_caps["resetKeyboard"] = "True"

第五:编写了几个页面的测试用例,只想执行指定的测试用例,这里需要用到的pytest的mark,写一个执行的文件,使用命令执行,遇到的问题是在'm "login"'里面具体标记的用例又加了双引号,所以这里指定的mark没有生效,没有按照指定的用例执行

解决方案:将里面的双引号去掉,如下图的正确写法

python appium自动化,走过的坑第1张

第六:命令行执行pytest的测试用例,只有两个测试用例,实际执行了2*2,每个用例分别执行了两次,问题在于命令执行写了两个pytest.main(),将后面的pytest.main()去掉后,每个用例执行一次。

python appium自动化,走过的坑第2张

第七:pytest用例的执行顺序,根据先搜索到的测试用例就先执行,如图:要先执行test_index的测试用例,就要加上01 ,先找到,先执行

python appium自动化,走过的坑第3张

第八:今天遇到的一个大坑,纯粹自己坑自己,两个类一共写了5个测试用例,结果收集到33个,刚开始以为是前置条件导致的,检查过前置条件没问题,我就等这33用例执行完,看测试报告,结果都是一个测试用例执行了很多次,就到这个测试用例里面找问题,结果发现取参数数据的时,把一个数据按照字母一个个来取,导致多了28次。。。。

造成这个问题的原因:错误的使用了pytest的参数化进行取数据,导致将一个数据,分成多份来取

这个问题还可以知道:有多少测试用例,不止看项目中有几个测试用例,还要看测试用例用到几组测试数据

python appium自动化,走过的坑第4张

#APP自动化怎么这么多坑啊!!!!后续会不断的进行更新,不断的入坑。

免责声明:文章转载自《python appium自动化,走过的坑》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mac中git flow使用【转帖】C# DllImport 系统调用使用详解 托管代码的介绍 EntryPoint的使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python调用摄像头

1.python实时调取本地摄像头 import numpy as np import cv2 cap = cv2.VideoCapture(0)    #参数为0时调用本地摄像头;url连接调取网络摄像头;文件地址获取本地视频 while(True): ret,frame=cap.read() #灰度化 gray=cv2.cvtColor(frame,...

Python(16)_爬去百度图片(urlopen和urlretrieve)

import urllib.request image_url = 'http://img18.3lian.com/d/file/201709/21/f498e01633b5b704ebfe0385f52bad20.jpg' response = urllib.request.urlopen(url=image_url) # 二进制的形式保存,方法一 w...

python 环境-----项目的包,打包方法

一. 将本地开发环境的依赖项目生成清单文件 1.在本地的开发环境中,env下执行: >pip3 freeze >requirements.txt 清单文件将会生成在当前项目目录下,内容如下所示将生成后的文件上传到linux服务器, requirements.txt 清单中的包 certifi==2018.4.16chardet==3.0.4i...

Python基础字符编码与转码

***了解计算机的底层原理*** Python全栈开发之Python基础-字符编码与转码 需知: 1.在python2默认编码是ASCII, python3里默认是utf-8 2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-8就是unicode 3.在py3中encode,在转...

python 函数返回值(总结)

  关键字:return   没有返回值的叫过程 def test1(): msg="我是一个过程" print(msg) 有return的叫函数 def test02(): msg="我是函数,有返回值" print(msg) return msg 关于返回的值: 定义的函数可以返回多个值,组合成元组def test03()...

linux下将Python环境默认更改为Python3.6

1、删除原来指向python2的软链接 1 rm -rf /usr/bin/python 2、创建新的软链接 1 ln -s /usr/bin/python3.6 /usr/bin/python 3、查看是否更改成功 python -V //若显示版本信息为python3.6,则更改成功...