编写脚本中 问题记录
1.logcat的抓取,因为我们抓取llogcat后,一直在adb窗口中,无法进行后续的操作,因此我们用kill进程的方式在实现
import subprocess
handle = subprocess.Popen("adb -d logcat >./log/DVRopen.txt" , shell=True)
sleep(10)
subprocess.Popen("taskkill /F /T /PID " + str(handle.pid) , shell=True)
#也可以用这个来退出
import sys
sys.exit()
2.图片对比,有的时候控件点击前后属性一样,我们可以根据图片的变化来判断
from PIL import Image
from cv2 import cv2
import numpy as np
im2 = Image.open("./ACpower.jpg")
img_size = im.size
img_size2 = im2.size
#图片裁剪
region = im.crop((100, 100, 1800, 700))
region2 = im2.crop((100, 100, 1800, 700))
region.save("./screenshots/AC.jpg")
region2.save("./screenshots/ACpower.jpg")
sleep(1)
file1 = "./screenshots/AC.jpg"
file2 = "./screenshots/ACpower.jpg"
image1 = cv2.imread(file1)
image2 = cv2.imread(file2)
difference = cv2.subtract(image1, image2)
result = not np.any(difference)
if result is True:
print("图片不一样")
else:
print("err:图片一样")
3.循环语句,必不可少,我用的python+unittest+uiautomator2写的脚本如下:
# coding:utf-8
import uiautomator2 as u2
from time import sleep
import unittest
d = u2.connect()
from Common import video,gdc_log #自己封装的方法
'''
脚本名称:下拉栏压力测试
测试步骤:
1.下拉
2.返回
'''
class pressure_dropdown(unittest.TestCase):
def setUp(self):
video.video.get_video()
def tearDown(self):
video.video.close_video()
def test_dropdown(self):
'''打开下拉栏'''
for i in range(1000):
for loop in [1,2]:
d.swipe(600, 10, 600, 400)
sleep(1)
sleep(2)
var = d.xpath('//*[@resource-id="com.android.systemui:id/gwm_quick_settings_system_panel"]').exists
d.click(1000, 700)
sleep(1)
if var is True:
print("第%d次打开下拉栏成功" %i)
else:
d.screenshot("./screenfail/dropdown.jpg")
gdc_log.get_log.log()
self.assertTrue(var is True ,"第%d次打开下拉栏失败" %i)
if __name__ == '__main__':
unittest.main()