小工具之apk黑屏自动检测

摘要:
包装和测试时,通常会将其发送给测试组。发现产品进入游戏后会变黑,这是对测试组精力的浪费。如果你想测试多个产品,你会因为黑屏问题做很多无用的工作。这就是为什么在将程序发送到测试之前,您需要测试产品是否为黑色。也就是说,您需要一个全自动测试工具来帮助您检查产品是否为黑屏,并以轻松的方式找出每个包装的黑屏现象。这是接下来要介绍的工具——“黑屏检测工具”。

在打包测试的时候经常发送给测试组之后,发现已进入游戏就黑屏,这个就浪费了测试组的精力,如果要测试多款产品的话,就会因为黑屏问题做很多无用功,这是程序就需要在发给测试的时候自己先测试产品会不会黑屏。同样,数量一多,就会浪费精力。需要先安装到设备上,在点击测试,浪费时间。

这是,你就需要一款全自动的测试工具来帮你检查产品是否黑屏,用不耗精力的方式把每个包的黑屏现象找出来。这就是接下来要介绍的工具——“黑屏检测工具”。

材料

  1. 按键精灵
  2. 海马玩模拟器

原理

利用按键精灵将产品在海马玩模拟器中打开,然后在产品运行一段时间之后截屏分析图像,确认是否黑屏。

代码

from PyQt4.QtGui import QMainWindow
from PyQt4.QtCore import pyqtSignature

from v.Ui_App import Ui_MainWindow

import sys
import os
import QtUtil
import subprocess
from subprocess import Popen,PIPE
import ImageGrab
import Image
import random

class App(QMainWindow, Ui_MainWindow):
    """
    Class documentation goes here.
    """
    def __init__(self, parent = None):
        """
        Constructor
        """
        QMainWindow.__init__(self, parent)
        self.setupUi(self)
        
        #拖拽apk
        self.setAcceptDrops(True)
        QtUtil.setFileDragIn(self, self.test)
         
    #安装运行apk
    def test(self,dragInto):
        if os.path.splitext(str(dragInto))[1] == '.apk':
            self.lineEdit.setText(dragInto)
            
            #安装apk
            sub1 = subprocess.Popen('F:/install/Droid4X/adb.exe'+' install ' + str(dragInto))
            sub1.communicate()
#             os.system('Ping -n 15 127.1 > nul ')
#             #打开按键精灵运行apk
            sub2 = subprocess.Popen('res/hit.exe')
            sub2.communicate()
#             
            os.system('Ping -n 20 127.1 > nul ')

#             
            self.screenshots()
            self.pixel()
            
        else:
            QtUtil.showOkDialog(self, 'error', u'不是apk文件')

    #截屏
    def screenshots(self):
        bbox = (150, 60, 1280, 790)
        img = ImageGrab.grab(bbox)
        img.save("pixel.png")
#         img.show()
#         image = Image.open("pixel.png.png")
#         image.getcolors()
    #选择像素点
    def pixel(self):
        list = []
        
        self.collect = []
        
        img=Image.open("pixel.png")
        img_array=img.load()

        for i in range(100):
            x = random.randint(10,1120)
            y = random.randint(10,720)
            print x,y
            list.append(img_array[x,y])
    
        print list
        for i in range(100):
            if list[i] == (0,0,0):
                self.collect.append(list[i])
                
        self.end() 
        self.judge()
        
    #判断是否黑屏
    def judge(self):
        
        if len(self.collect) == 100:            
            QtUtil.showOkDialog(self, 'error', u'出现黑屏')
        else:
            QtUtil.showOkDialog(self, 'correct', u'apk正常') 

    #结束运行,删除apk
    def end(self):
        sub = subprocess.Popen('res/remove.exe')
#         sub.communicate()

要想运行必须用按键精灵先录制两段脚本用于运行与卸载,运行这款工具,全程全自动,只要打开海马玩模拟器,将其最大化,在将apk拖入工具界面,软件就会自动测试,最后告诉你是否黑屏。

 小工具之apk黑屏自动检测第1张

本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 

转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4681262.html

免责声明:文章转载自《小工具之apk黑屏自动检测》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mysql8下载安装及配置盘姬工具箱WV1.10下篇

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

相关文章

MAC连接安卓手机通过adb指令安装apk

Android的apk可以通过adb命令来安装。在MAC电脑上,如果想通过命令行的方式给安卓手机安装apk,需要做以下操作; 一句话概括就是:将安卓SDK的adb命令添加到环境变量中,然后通过adb install方式将apk从电脑上安装到手机中。 具体操作如下: 1、点击Finder,右键选择“前往文件夹”,输入“/etc”,在“操作”中选择“显示简介”...

对 Android APK 安装包进行反编译并修改再打包

1、确认系统中已安装 JRE、JDK(需要 1.8 以上版本:https://www.oracle.com/cn/java/technologies/javase-downloads.html) 检查命令:java -version 2、JRE、JDK 的路径已配置在系统环境变量 PATH 中: 如:C:Program FilesJavajdk1.8.0_...

android获取包名的几种方法

方法一: adb shell pm list package -f 将获取手机内所有apk对应的包名和路径 方法二: adb shell dumpsys window w | findstr / | findstr name= 先打开需要查找的apk后,再敲入以上命令   备注:此方法不一定准确。对于使用qq的时候出现的了问题  com.tencent....

Android 换肤

导读:皮肤程序的AndroidManifest.xml中配置 皮肤一般含有多个文件,例如图片、配置等文件,分散的文件不利于传输和使用,最好打包。打包的格式一般选择zip格式。这里分两种情况,一种是apk,例如AdwLauncher,它的桌面皮肤格式是一个apk;另一种是自定义扩展名,例如墨迹天气皮肤扩展名是mja,搜狗输入法的皮肤扩展名是sga,它们的文...

windows下PyQt 调用命令行避免弹出黑框的方法

一般在pycharm里面直接运行代码时候还好,但是通过pyinstaller打包成exe之后,再调用命令行下的命令时候,主界面背后会弹出来一个黑色框,影响使用体验。 关键的做法是在subprocess.Popen里面传一个startupinfo对象,其中指定wShowWindow属性。 具体参考python手册: 一个例子如下: def run_...

TCP协议粘包问题详解

TCP协议粘包问题详解前言   在本章节中,我们将探讨TCP协议基于流式传输的最大一个问题,即粘包问题。本章主要介绍TCP粘包的原理与其三种解决粘包的方案。并且还会介绍为什么UDP协议不会产生粘包。   基于TCP协议的socket实现远程命令输入   我们准备做一个可以在Client端远程执行Server端shell命令并拿到其执行结果的程序,而涉及...