开源云真机平台-Sonic平台-python自定义脚本(持续更新中)

这篇具有很好参考价值的文章主要介绍了开源云真机平台-Sonic平台-python自定义脚本(持续更新中)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

开源云真机平台-Sonic平台-python自定义脚本(持续更新中)

1、获取设备序列号

udId = sys.argv[1:][1]

如:

# -*- coding: utf-8 -*- 
  
import os,sys,json
udId = sys.argv[1:][1]

sonic python,自动化测试框架,笔记,python,自动化,开源

2、获取全局参数

text1 = sys.argv[1:][2]

如:

# -*- coding: utf-8 -*- 
  
import os,sys,json
text1 = sys.argv[1:][2]

sonic python,自动化测试框架,笔记,python,自动化,开源

 3、获取全局参数后,将其转换为JSON格式

备注:获取全局参数后,得到的是text类型的字符串,使用切割的方式将其转化为JSON格式;

# -*- coding: utf-8 -*- 
  
import os,sys,json
udId = sys.argv[1:][1]
text1 = sys.argv[1:][2]

print(f"udId={udId},text={text1},type={type(text1)}")
print("="*30)
data = text1.strip('{} ')
pairs = data.split(',')
result = {}
for pair in pairs:
    key, value = pair.split(':')
    result[key] = value
print(f"result={result}")
print("="*30)

sonic python,自动化测试框架,笔记,python,自动化,开源

4、自动开启WIFI

# -*- coding: utf-8 -*- 
  
import os,sys,json
udId = sys.argv[1:][1]
text1 = sys.argv[1:][2]

def run_command(command):
    # command = f"""adb -s {udId} shell settings put system screen_brightness 0"""
    print(f"command={command}")
    os.system(command)
  
def run_test(udId):
    run_command(f"""adb -s {udId} shell svc wifi enable""")
          
print(f"udId={udId},text={text1},type={type(text1)}")
print("="*30)

run_test(udId)

sonic python,自动化测试框架,笔记,python,自动化,开源

5、adb模拟滑动

import os,sys,json,time
udId = sys.argv[1:][1]
text1 = sys.argv[1:][2]

command=f"""adb -s {udId} shell input swipe 165 700 165 100"""
print(f"command={command}")
os.system(command)
time.sleep(1)

sonic python,自动化测试框架,笔记,python,自动化,开源

6、执行monkey稳定性测试并将日志写在安卓设备内部

备注:

1)执行前,将屏幕亮度调到最低,将WIFI开启,将系统音量调到最低,

2)清除之前的旧日志,防止数据混淆;

3)将顶部状态栏禁用掉,可以一定程度上防止WIFI被关闭导致的测试问题(手动可以下拉状态栏);

4)清除logcat日志,便于记录新的日志;

# -*- coding: utf-8 -*- 
  
import os,sys,json,time
udId = sys.argv[1:][1]
text1 = sys.argv[1:][2]

def run_command(command):
    # command = f"""adb -s {udId} shell settings put system screen_brightness 0"""
    print(f"command={command}")
    os.system(command)
    time.sleep(1)
  
def run_monkey_test(udId):
    run_command(f"""adb -s {udId} shell pm setsystemuimode 0""")
    run_command(f"""adb -s {udId} shell svc wifi enable""")
    run_command(f"""adb -s {udId} shell settings put system screen_brightness 0""")
    run_command(f"""adb -s {udId} shell settings put system volume_music_min 0""")
    run_command(f"""adb -s {udId} shell settings put system volume_alarm_min 0""")
    run_command(f"""adb -s {udId} shell settings put global policy_control immersive.status=*""")
    run_command(f"""adb -s {udId} logcat -c""")
    run_command(f"""adb -s {udId} shell rm /sdcard/MonkeyLog.text""")
    run_command(f"""adb -s {udId} shell rm /sdcard/MonkeyError.text""")
    
    # run_command(f"""adb -s {udId} shell settings put global policy_control null""")
    run_command(f"""adb -s {udId} shell "monkey -p com.android.settings --pct-syskeys 0 --pct-touch 16 --pct-motion 16 --pct-trackball 16 --pct-majornav 0 --pct-appswitch 16 --pct-nav 16 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --kill-process-after-error -v -v -v --throttle 1000 9999999 -s 123456 1> /sdcard/MonkeyLog.text 2> /sdcard/MonkeyError.text &""")

    print(f"monkey testing...")
          
print(f"udId={udId},text={text1},type={type(text1)}")
print("="*30)

run_monkey_test(udId)

sonic python,自动化测试框架,笔记,python,自动化,开源

7、停止正在运行的monkey稳定性测试

备注:

1)判断是否存在monkey进程,若存在,则将其停止;

2)执行完毕后,恢复底部状态栏可见;

# -*- coding: utf-8 -*- 
  
import os,sys,json
import subprocess

udId = sys.argv[1:][1]

def run_command(cmd):
    process = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
    output, error = process.communicate()
    return output.decode().strip()


def check_and_kill_pid(udId):
    #read
    run_command(f'adb -s {udId} shell ps > shellps.log')

    #check
    with open('shellps.log', 'r') as file:
        for line in file:
            if 'com.android.commands.monkey' in line:
                apk_pin = line.split()[1]
                break
        else:
            apk_pin = None

    #kill
    if apk_pin:
        print(f"Monkey process PID : {apk_pin}")
        run_command(f'adb -s {udId} shell kill {apk_pin}')
        print("Monkey test end.")
    else:
        print("android device not run monkey test.")


check_and_kill_pid(udId)

command = f"""adb -s {udId} shell settings put global policy_control null"""
print(f"command={command}")
os.system(command)

运行效果:

sonic python,自动化测试框架,笔记,python,自动化,开源

8、[批量远程安装APK]批量安装局域网内共享目录下的APK文件

用途:局域网共享APK文件,将其批量安装到所有的安卓设备上;

备注:使用前需要保证局域网文件能够访问,需要设置带密码保护的共享;

# -*- coding: utf-8 -*-
import os
import subprocess
import os, sys, json, time, random

udId = sys.argv[1:][1]
text1 = sys.argv[1:][2]

ftp_path = r"\\10.1.100.1\share\APK"
temp_path = "/data/local/tmp/"
apk_name = "com.baidu.apk"
local_pc_path = r"D:\temp"

pc_path = os.path.join(ftp_path, apk_name)
android_path = os.path.join(temp_path, apk_name)

print("ftp_path=" + ftp_path)
print("pc_path=" + pc_path)
print("android_path=" + android_path)


def run_command(command):
    print(f"command={command}")
    os.system(command)
    time.sleep(1)


def run_test(udId):
    run_command(f"""adb -s {udId} shell rm {android_path}""")
    run_command(f"""adb -s {udId} shell ls -ll {android_path}""")
    if not os.path.exists(f"{local_pc_path}"):
        os.mkdir(local_pc_path)
    if not os.path.exists(fr"{local_pc_path}\{apk_name}"):
        run_command(f"""copy {pc_path} {local_pc_path}\.""")
        delay_time = random.randint(1, 10)
        time.sleep(delay_time)
        run_command(f"""dir {local_pc_path}""")
    else:
      time.sleep(15)

    if not os.path.exists(fr"{local_pc_path}\{apk_name}"):
        run_command(f"""copy {pc_path} {local_pc_path}\.""")
        delay_time = random.randint(1, 10)
        time.sleep(delay_time)
        run_command(f"""dir {local_pc_path}""")
    else:
      time.sleep(5)

    run_command(f"""adb -s {udId} push "{local_pc_path}\{apk_name}" {temp_path}.""")
    run_command(f"""adb -s {udId} shell sleep 3""")

    run_command(f"""adb -s {udId} shell ls -ll {android_path}""")
    run_command(f"""adb -s {udId} shell pm install -r {android_path}""")
    print(f"apk install successfully...")
    time.sleep(3)


if __name__ == '__main__':
    run_test(udId)







sonic python,自动化测试框架,笔记,python,自动化,开源文章来源地址https://www.toymoban.com/news/detail-822583.html

到了这里,关于开源云真机平台-Sonic平台-python自定义脚本(持续更新中)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一站式开源持续测试平台 MerterSphere 之测试跟踪操作详解

    MeterSphere是一站式的开源持续测试平台,遵循 GPL v3 开源许可协议,涵盖测试跟踪、接口测试、UI 测试和性能测试等功能,全面兼容JMeter、Selenium 等主流开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,加速高质量的软件交付。 官网地址:

    2024年02月07日
    浏览(40)
  • 如何远程访问Linux MeterSphere一站式开源持续测试平台

    MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能,全面兼容 JMeter、Selenium 等主流开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,加速高质量的软件交付,推动中国测试行业整体效率的提升。 下面介

    2024年02月09日
    浏览(30)
  • 教你使用 Linux+MeterSphere 一站式开源持续测试平台远程访问

    MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能,全面兼容 JMeter、Selenium 等主流开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,加速高质量的软件交付,推动中国测试行业整体效率的提升。 下面介

    2024年02月09日
    浏览(42)
  • 开源 C++ JSON 库 sonic-cpp解析性能为 rapidjson 的 2.5 倍

    sonic-cpp 是由字节跳动 STE 团队和服务框架团队共同研发的一款面向 C++ 语言的高效 JSON 库,极致地利用当前 CPU 硬件特性与向量化编程,大幅提高了序列化反序列化性能,解析性能为 rapidjson 的 2.5 倍。 sonic-cpp 在字节内部上线以来, 已为抖音、今日头条等核心业务,累计节省

    2023年04月19日
    浏览(29)
  • Django实现接口自动化平台(十)自定义action names【持续更新中】

    相关文章: Django实现接口自动化平台(九)环境envs序列化器及视图【持续更新中】_做测试的喵酱的博客-CSDN博客 深入理解DRF中的Mixin类_做测试的喵酱的博客-CSDN博客  python中Mixin类的使用_做测试的喵酱的博客-CSDN博客  本章是项目的一个分解,查看本章内容时,要结合整体项

    2024年02月16日
    浏览(37)
  • 前端页面性能优化,性能测试算法优化,MeterSphere开源持续测试平台v2.10.5 LTS版本发布

    2023年8月7日,MeterSphere一站式开源持续测试平台正式发布v2.10.5 LTS版本。自2023年5月发布v2.10 LTS版本后,MeterSphere开源项目组坚持每两周发布小版本,持续进行问题的修复更新,并针对部分功能进行优化。 本次发布的MeterSphere v2.10.5 LTS版本在前端页面性能、性能测试算法、后端

    2024年02月14日
    浏览(29)
  • Django实现接口自动化平台(十二)自定义函数模块DebugTalks 序列化器及视图【持续更新中】

    上一章: Django实现接口自动化平台(十一)项目模块Projects序列化器及视图【持续更新中】_做测试的喵酱的博客-CSDN博客 本章是项目的一个分解,查看本章内容时,要结合整体项目代码来看: python django vue httprunner 实现接口自动化平台(最终版)_python+vue自动化测试平台_做测

    2024年02月16日
    浏览(34)
  • Python自定义函数练习(持续更新中~)

    1.计算矩阵的面积和周长: 2.将矩阵转置后,计算该矩阵与另一个矩阵的和并返回一个新的矩阵对象。 3.栈的基本操作 4.链表的基本操作 5.队列的基本操作 6.Histogram类封装直方图 (1)定义带一个整数参数n的构造函数,用于初始化存储数据的列表,列表长度为n,列表各元素的

    2024年02月05日
    浏览(32)
  • 基于Python的100+高质量爬虫开源项目(持续更新中)

    以下是项目所使用的框架,不同的项目所使用的框架或许有不同,但都万差不离: Scrapy:一个快速的高级Web爬虫框架,可用于从网站中提取结构化数据。 BeautifulSoup:一个用于从HTML和XML文件中提取数据的Python库。 PySpider:一个轻量级,跨平台并基于事件的Python爬虫框架。 T

    2024年01月16日
    浏览(41)
  • 微信小程序+MQTT(emqx)+Ngnix解决真机调试持续重新连接问题

       最近想用微信小程序订阅MQTT的消息,但是想要用MQTT,微信小程序不允许用ip去连接,必须用经过备案的域名,然后就开始了艰辛的合法域名探索之路。   我现在申请的是阿里云的免费域名,1年。实际上付费的也不贵,每年几十块的也有。详细教程参考阿里云的官方教

    2024年02月03日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包