使用的夜神模拟器,使用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没有生效,没有按照指定的用例执行
解决方案:将里面的双引号去掉,如下图的正确写法
第六:命令行执行pytest的测试用例,只有两个测试用例,实际执行了2*2,每个用例分别执行了两次,问题在于命令执行写了两个pytest.main(),将后面的pytest.main()去掉后,每个用例执行一次。
第七:pytest用例的执行顺序,根据先搜索到的测试用例就先执行,如图:要先执行test_index的测试用例,就要加上01 ,先找到,先执行
第八:今天遇到的一个大坑,纯粹自己坑自己,两个类一共写了5个测试用例,结果收集到33个,刚开始以为是前置条件导致的,检查过前置条件没问题,我就等这33用例执行完,看测试报告,结果都是一个测试用例执行了很多次,就到这个测试用例里面找问题,结果发现取参数数据的时,把一个数据按照字母一个个来取,导致多了28次。。。。
造成这个问题的原因:错误的使用了pytest的参数化进行取数据,导致将一个数据,分成多份来取
这个问题还可以知道:有多少测试用例,不止看项目中有几个测试用例,还要看测试用例用到几组测试数据
#APP自动化怎么这么多坑啊!!!!后续会不断的进行更新,不断的入坑。