Example #1
0
import yaml
import appo.common.logger as log
import os

# config_file_path = 'D:/pycode/appo/conf/config.yml'
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
config_file_path = rootPath + '\\conf\\config.yml'

logger = log.model_logger('redconfig')
with open(config_file_path, mode='r', encoding='UTF-8') as f_conf:
    try:
        dict_conf = yaml.load(f_conf)
    except yaml.YAMLError as exc:
        logger.exception(exc)
    finally:
        f_conf.close()


def configfile():
    return dict_conf


# class Config:
#     """从配置文件得到配置基础数据"""
#     def __init__(self):
#         pass
#
#     def read_config_ip(self,config_file):
#         try:
#             with open(config_file, 'r') as f:
Example #2
0
from appo.common import logger
from appo.case.media.ZB.test_audio import Audio

log = logger.model_logger('zb_test_audio_press')


class AudioPress(Audio):

    #进入音频播放音乐
    def test_scanAudio_press(self, num):
        i = 0
        while True:  #循环播放音频
            log.info('循环播放第%s次' % i)
            self.test_scanAudio(num)
            self.driver.press_keycode(23)
            i = i + 1


if __name__ == '__main__':
    p = AudioPress()
    print(AudioPress.mro())
    p.setUp()
    audiolist = [
        'APE-32', 'flac-19', 'm4a-11', 'mp1-2', 'mp2-20', 'MP3音频(带字幕)-7',
        'MP3音频-63', 'OGG音频-19', 'WAV-27', 'WMA音频-19'
    ]
    p.test_scanAudio_press(len(audiolist))
Example #3
0
import os
import subprocess
import appo.common.global_var as gl
import appo.common.logger as log

logger = log.model_logger('connect')


def checkandroidevn(self=None):
    """检查Android adb环境"""
    if 'ANDROID_HOME' in os.environ:
        command = os.path.join(os.environ['ANDROID_HOME'], 'platform-tools',
                               'adb')
        gl.android_home = True
        logger.info('android adb 环境存在')
    else:
        logger.error('Adb not found in $ANDROID_HOME path: %s.' %
                     os.environ['ANDROID_HOME'])
        gl.android_home = False
        raise EnvironmentError('Adb not found in $ANDROID_HOME path: %s.' %
                               os.environ['ANDROID_HOME'])


def checkdevcieconnect():
    """检查设备是否连接"""

    cmd = 'adb devices'
    try:
        """获取设备列表信息,并用"\r\n"拆分"""
        deviceinfo = subprocess.check_output(cmd,
                                             stderr=subprocess.PIPE,
Example #4
0
import re
import subprocess
from appo.common import connect
from appo.common import logger

log = logger.model_logger('deviceinfo')
"""获取设备信息"""


def getandroidversion():
    """正则获取安卓版本号"""
    try:
        # 获取系统设备系统信息
        sysinfo = subprocess.check_output(
            'adb shell cat /system/build.prop').decode('utf-8')
        # 获取安卓版本号
        androidversion = re.findall('version.release=(\d\.\d.\d)*', sysinfo,
                                    re.S)[0]
        _version = androidversion
        log.info('安卓版本androidversion=%s' % _version)
        return _version
    except Exception as e:
        log.exception(e)


def getdevicename():
    """通过正则获取设备名"""
    shell_getdevice_cmd = 'adb devices -l'
    try:
        deviceinfo = subprocess.check_output(shell_getdevice_cmd).decode(
            'utf-8')
Example #5
0
from appo.case.basecase import BaseCase
import unittest
from appo.common import logger
import time
import random

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
'''
使用此文件时,需要修改test_scanAudio()中的
self.handle_walk_smple(num)   
num 代表音频格式的数目,例如有5个不同的音频格式文件夹,则num=5
'''
log = logger.model_logger('zb_test_video')


class Video(unittest.TestCase, BaseCase):

    global filename
    badaudoi_list = []
    result = False

    def setUp(self):
        caps = self.package_activity_main('zb_fileexplorer')  # zb_fileexplorer
        self.startUp(caps)
        self.zb_common_casetype_media()

    def tearDown(self):
        self.endDown()

    '''
Example #6
0
from appo.common import logger
from appo.case.basecase import BaseCase
import unittest
import time

log = logger.model_logger('test_picture')


class Toggle_HDMI_Media(unittest.TestCase, BaseCase):
    def setUp(self):
        caps = self.package_activity_main('zb_home')
        self.startUp(caps)

    def tearDown(self):
        self.endDown()

    def into_hdmi(self):
        self.driver.find_element_by_xpath(
            "//android.widget.RelativeLayout[@resource-id='xmlauncher.appo.com.xmlauncher4:id/more']/android.widget.ImageView[1]"
        ).click()

    # // android.widget.RelativeLayout[ @ resource - id = 'xmlauncher.appo.com.xmlauncher4:id/more'] /
    # android.widget.ImageView[1]
    # // android.widget.RelativeLayout[ @ resource - id = 'xmlauncher.appo.com.xmlauncher4:id/more']
    #进入音频播放音乐
    def zb_common_hdmi_case(self):
        self.driver.find_element_by_xpath(
            "//android.widget.RelativeLayout[@resource-id='xmlauncher.appo.com.xmlauncher4:id/more']"
        ).click()
        # self.driver.implicitly_wait(3)
Example #7
0
from appo.case.basecase import BaseCase
import unittest
from appo.common import logger
import time
import random

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
'''
使用此文件时,需要修改test_scanAudio()中的
self.handle_walk_smple(num)   
num 代表音频格式的数目,例如有5个不同的音频格式文件夹,则num=5
'''
log = logger.model_logger('zb_test_audio')


class Audio(unittest.TestCase, BaseCase):

    badaudoi_list = []
    result = False

    def setUp(self):
        caps = self.package_activity_main('zb_fileexplorer')  # zb_fileexplorer
        self.startUp(caps)
        self.zb_common_casetype_media()

    def tearDown(self):
        self.endDown()

    '''
        op :代表用户操作,forward快进,reback快退
Example #8
0
from appo.common import logger
from appo.case.media.ZB.test_video import Video

log = logger.model_logger('zb_test_video_press')


class VideoPress(Video):

    #进入音频播放音乐
    def test_scanAudio_press(self, num):
        i = 0
        while True:  #循环播放音频
            log.info('循环播放第%s次' % i)
            self.test_scanVideo(num)
            i = i + 1


if __name__ == '__main__':
    p = VideoPress()
    print(VideoPress.mro())
    p.setUp()
    audiolist = ['ASF视频文件', 'AVI视频文件', 'DAT视频文件', 'FLV视频文件', 'MKV']
    p.test_scanAudio_press(len(audiolist))
Example #9
0
from appo.common import logger
import time
from appo.case.media.ZB.test_photo import Phote

log = logger.model_logger('zb_test_picture_press')


class PhotoPress(Phote):
    def setUp(self):
        caps = self.package_activity_main('zb_fileexplorer')  # zb_fileexplorer
        self.startUp(caps)
        self.zb_common_casetype_media()

    def tearDown(self):
        self.endDown()

    #图片轮播
    def test_toggleimage_press(self, picturelist):
        self.driver.find_element_by_xpath(
            "//android.widget.TextView[@text='【多媒体】图片测试库']").click()
        i = 0
        while True:
            log.info('循环播放第%s次' % i)
            self.move_up_until_element_appear(
                picturelist[0])  #复原,使可以显示出列表种的第一个元素
            for picturefile in picturelist:
                self.move_down_until_element_appear(picturefile)
                # self.loggle_imagle(picturefile)
                print(picturefile)
                subfilecount = picturefile.split('-')[1]
                xpath = "//*[@text='{}']".format(picturefile)
Example #10
0
from appo.common import logger
from appo.case.HDMI import test_toggle_HDMI_media

log = logger.model_logger('test_toggle_HDMI_press')


class Toggle_HDMI_Press(test_toggle_HDMI_media.Toggle_HDMI_Media):

    # 进入音频播放音乐
    def test_toggle_hdmi_press(self):
        i = 0
        while True:  # 循环进入退出hdmi通道
            if i == 0:  #第一次进去时候,需要先定位到更多
                self.test_toggle_hdmi('press_first_for')
            else:
                self.test_toggle_hdmi('press')
            i = i + 1


if __name__ == '__main__':
    t = Toggle_HDMI_Press()
    t.setUp()
    t.test_toggle_hdmi_press()
Example #11
0
from appo.common import logger
from appo.common import myremote
from appo.common import global_var as gl

log = logger.model_logger('mydriver')
port = gl.configFile['appium']['port1']


def driver(caps):
    selenium_grid_url = 'http://localhost:%s/wd/hub' % port
    log.info('appiumurl = %s' % selenium_grid_url)
    try:
        driver = myremote.remote(selenium_grid_url, caps)
        log.info('session=%s', driver)
        return driver
    except Exception as exc:
        log.exception(exc)
Example #12
0
from appo.common import connect as con
from appo.common import logger
from appo.common import mydriver
from appo.common import tools
from appo.common import global_var as gl
import datetime
import shutil

log = logger.model_logger('basecase')


class BaseCase:
    '''
        测试用例基类
    '''
    appium = tools.AppiumServer()
    driver = None
    ip = gl.configFile['ip']['ip5']
    port = gl.configFile['appium']['port1']
    log.info('ip = %s ; appium_port = %s' % (ip, port))

    # 字典映射
    xm = gl.configFile['xm']
    fm = gl.configFile['fm']
    zb = gl.configFile['zb']

    def switcher(self, casetype):
        switch = {
            'xm_home': [
                self.xm['package']['xm_home'],
                self.xm['activity']['homeactivity']
Example #13
0
from appo.common import logger
from appo.common import deviceinfo
from appium import webdriver
from appo.common import global_var as gl

log = logger.model_logger('remote')


def remote(url, packageandactivity):
    '''远程连接'''
    log.info('package=%s,activity=%s', packageandactivity[0],
             packageandactivity[1])
    desired_caps = {
        "platformName": "Android",
        "deviceName": deviceinfo.getdevicename(),
        "platformVersion": deviceinfo.getandroidversion(),
        "appPackage": packageandactivity[0],
        "appActivity": packageandactivity[1],
        'automationName': 'uiautomator2',  # 适配Android7之上版本
        'newCommandTimeout': 200
    }

    # 连接到远程服务器进行自动化测试
    try:
        driver = webdriver.Remote(url, desired_caps)
        log.info(driver)
        return driver
    except Exception as e:
        log.exception(e)

Example #14
0
import subprocess
import psutil
import os
from appo.common import global_var as gl
from appo.common import logger
import time

log = logger.model_logger('tools')
'''
    获取进程、线程id类
'''


class MyPsutil:
    def processinfo(self, processName):
        pids = psutil.pids()
        for pid in pids:
            # print(pid)
            p = psutil.Process(pid)
            print(p.name)
            if p.name() == processName:
                print(pid)
                return True  # 如果找到该进程则打印它的PID,返回true
        return False  # 没有找到该进程,返回false

    def getpid(self, port):
        cmd = 'netstat -ano |findstr "{}"'.format(port)
        print(cmd)
        try:
            sysinfo = subprocess.check_output(cmd,
                                              stderr=subprocess.PIPE,