当前位置: 首页 > news >正文

移动测试相关

一、环境搭建

准备工作:

        (python、pycharm安装配置好)

        1、Java SDK 安装配置

Java Downloads | Oracle

                下载安装后配置系统环境变量:JAVA_HOME(jdk根目录路径)和path(jdk根目录下的bin目录路径)

        2、Android SDK下载安装(也可以通过Android Studio下载)

AndroidSDK下载及安装 - 陈晓猛 - 博客园

 Android 开发者  |  Android Developers

                下载安装后配置系统环境变量:ANDROID_HOME(SDK根目录路径)和path(platform-tools目录和tools目录两个路径)

        3、模拟器安装(夜神模拟器、mumu等)

                 用AndroidSDK中platform-tools目录下的adb.exe文件替换模拟器bin目录下的adb.exe和nox_adb.exe文件(目的是使AndroidSDK中的adb与模拟器中的adb文件版本相同)

        4、cmd中:pip install Appium-Python-Client(appium客户端)

        5、下载安装appium服务端:Appium: Mobile App Automation Made Awesome.

                安装后检查EditConfigurations中的环境变量是否跟本机配置的系统变量一致

 二、ADB的使用(Android Debug Bridge 安卓调试桥梁)

作用:通过命令去操作手机

服务(发现代码连不上手机时)

adb kill-serveradb start-server

查看设备

adb devices

进入手机终端

adb shell

(进入终端后根据Linux命令操作)

获取手机安卓版本

adb shell getprop ro.build.version.release

获取当前运行的程序和界面的名称

adb shell dumpsys window windows | findstr mFocusedApp

文件传输

adb push 电脑上的文件 手机上的位置 
adb pull 手机上的文件 电脑上的位置

(模拟器上可以直接拖拉文件实现上传)

软件 安装&卸载

adb install  电脑上的apk文件的路径
adb uninstall 应用的包名

获取其他信息

adb shell am start -w  包名\.启动名

完整实例

(appium服务和夜神模拟器处于开启状态)

 

import time
from appium import webdriverdesired_caps={}#连接移动设备必须的参数
# 当前要测试的设备的名称(可能开了多个模拟器或者多台手机)
desired_caps['deviceName']='127.0.0.1:62001'#cmd中adb devices
# 操作系统
desired_caps['platformName']='Android'
# 操作系统的版本
desired_caps['platformVersion']='7.1'#模拟器中查看#cmd中adb shell dumpsys window windows | findstr mFocusedApp 获取包名和页面地址# 需要启动的APP的名称(Android系统为APP包名)
desired_caps['appPackage']='com.android.settings'
# 要启动的APP的页面地址
desired_caps['appActivity']='.Settings'#远程调用手机,command_executor调用的地址(从appium服务器获得),desired_capabilities字典
driver=webdriver.Remote(command_executor='http://127.0.0.1:4723/wd/hub',desired_capabilities=desired_caps)time.sleep(5)driver.close_app()#关闭app
driver.quit()#释放资源

相关文章:

移动测试相关

一、环境搭建 准备工作: (python、pycharm安装配置好) 1、Java SDK 安装配置 Java Downloads | Oracle 下载安装后配置系统环境变量:JAVA_HOME(jdk根目录路径)和path(jdk根目录下的bin目录路径…...

SIGIR22:User-controllable Recommendation Against Filter Bubbles

User-controllable Recommendation Against Filter Bubbles 摘要 推荐系统经常面临过滤气泡的问题:过度推荐基于用户特征以及历史交互的同质化项目。过滤气泡将会随着反馈循环增长,缩小了用户兴趣。现有的工作通常通过纳入诸如多样性和公平性等准确性之…...

Python中的进程线程

文章目录前言多进程与多线程基本概念多进程multiprocessing 类对象进程池subprocess模块进程间通信多线程threading实现线程操作线程共享所有变量线程锁参考资料前言 又花了点时间学习了一下Python中的多线程与多进程的知识点,梳理一下供复习参考 多进程与多线程 …...

python(8):使用conda update更新conda后,anaconda所有环境崩溃----问题没有解决,不要轻易更新conda

文章目录0. 教训1. 问题:使用conda update更新conda后,anaconda所有环境崩溃1.1 问题描述1.2 我搜索到的全网最相关的问题----也没有解决3 尝试流程记录3.1 重新安装pip3.2 解决anaconda编译问题----没成功0. 教训 (1) 不要轻易使用conda update更新conda----我遇到…...

c++11 标准模板(STL)(std::multimap)(四)

定义于头文件 <map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class multimap;(1)namespace pmr { template <class Key, class T…...

乐观锁及悲观锁

目录 1.乐观锁 (1).定义 (2).大体流程 (3).实现 (4).总结 2.悲观锁 (1).定义 (2).大体流程 (3).实现 (4).缺点 (5).总结 1.乐观锁 (1).定义 乐观锁在操作数据时非常乐观&#xff0c;认为别的线程不会同时修改数据所以不会上锁&#xff0c;但是在更新的时候会判断一…...

常见的锁策略

注意: 接下来讲解的锁策略不仅仅是局限于 Java . 任何和 "锁" 相关的话题, 都可能会涉及到以下内容. 这些特性主要是给锁的实现者来参考的.普通的程序猿也需要了解一些, 对于合理的使用锁也是有很大帮助的. 1.乐观锁 vs 悲观锁 悲观锁: &#xff08;认为出现锁冲…...

springboot学习(八十) springboot中使用Log4j2记录分布式链路日志

在分布式环境中一般统一收集日志&#xff0c;但是在并发大时不好定位问题&#xff0c;大量的日志导致无法找出日志的链路关系。 可以为每一个请求分配一个traceId&#xff0c;记录日志时&#xff0c;记录此traceId&#xff0c;从网关开始&#xff0c;依次将traceId记录到请求头…...

10种ADC软件滤波方法及程序

10种ADC软件滤波方法及程序一、10种ADC软件滤波方法1、限幅滤波法&#xff08;又称程序判断滤波法&#xff09;2、中位值滤波法3、算术平均滤波法4、递推平均滤波法&#xff08;又称滑动平均滤波法&#xff09;5、中位值平均滤波法&#xff08;又称防脉冲干扰平均滤波法&#x…...

第五章:Windows server加域

加入AD域&#xff1a;教学视频&#xff1a;https://www.bilibili.com/video/BV1xM4y1D7oL/?spm_id_from333.999.0.0首先我们选择一个干净的&#xff0c;也就是新建的没动过的Windows server虚拟机。我们将DNS改成域的ip地址&#xff0c;还要保证它们之间能ping的通&#xff0c…...

Elasticsearch:获取 nested 类型数组中的所有元素

在我之前的文章 “Elasticsearch: object 及 nested 数据类型” 对 nested 数据类型做了一个比较详细的介绍。在实际使用中&#xff0c;你在构建查询时肯定会遇到一些问题。根据官方文档介绍&#xff0c;nested 类型字段在隐藏数组中索引其每个项目&#xff0c;这允许独立于索引…...

English Learning - Day53 作业打卡 2023.2.7 周二

English Learning - Day53 作业打卡 2023.2.7 周二引言1. 我必须承认&#xff0c;我之前学习没你用功。have to VS must2. 这跟我想得一样简单。3. 生活并不像它看上去那么顺风顺水&#xff0c;但也不会像我们想象得那么难。Look VS seem4. 你比去年高多了。5. 你关心你的工作胜…...

SpringMVC--注解配置SpringMVC、SpringMVC执行流程

注解配置SpringMVC 使用配置类和注解代替web.xml和SpringMVC配置文件的功能 创建初始化类&#xff0c;代替web.xml 在Servlet3.0环境中&#xff0c;容器会在类路径中查找实现javax.servlet.ServletContainerInitializer接口的类&#xff0c; 如果找到的话就用它来配置Servle…...

JavaScript中数组常用的方法

文章目录前言常用数组方法1、 join( )2、push&#xff08;&#xff09;与 pop&#xff08;&#xff09;3、shift&#xff08;&#xff09;与 unshift&#xff08;&#xff09;4、sort&#xff08;&#xff09;5、reverse&#xff08;&#xff09;6、slice&#xff08;&#xff…...

ModuleNotFoundError: No module named ‘pip‘

项目场景&#xff1a;pip 错误 Traceback (most recent call last): File "E:\KaiFa\Python\Python38\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File "E:\KaiFa\Python\Python38\lib\runpy.py&qu…...

ROS2 入门应用 发布和订阅(C++)

ROS2 入门应用 发布和订阅&#xff08;C&#xff09;1. 创建功能包2. 创建源文件2.1. 话题发布2.2. 话题订阅3. 添加依赖关系4. 添加编译信息4.1. 添加搜索库4.2. 增加可执行文件4.3. 增加可执行文件位置5. 编译和运行1. 创建功能包 在《ROS2 入门应用 工作空间》中已创建和加…...

XSS漏洞,通过XSS实现网页挂马

**今天讲下通过XSS实现网页挂马~*&#xff0c;目的是了解安全方面知识&#xff0c;提升生活网络中辨别度 原理&#xff1a; 实验分为两部分&#xff1a; 1、通过Kali linux&#xff0c;利用MS14_064漏洞&#xff0c;制作一个木马服务器。存在该漏洞的用户一旦通过浏览器访问木…...

家政服务小程序实战教程09-图文卡片

小程序还有一类需求就是展示服务的列表&#xff0c;我们这里用图文卡片组件来实现&#xff0c;我们先要添加一个标题&#xff0c;使用网格布局来实现 第一列添加一个文本组件&#xff0c;第二列添加一个图标组件 修改文本组件的文本内容&#xff0c;设置外边距 设置第二列的样式…...

国内唯一一部在CentOS下正确编译安装和使用RediSearch的教程

开篇 Redis6开始增加了诸多激动人心的模块&#xff0c;特别是&#xff1a;RedisJSON和RediSearch。这两个模块已经完全成熟了。它们可以直接使用我们的生产上的Redis服务器来做全文搜索&#xff08;二级搜索&#xff09;以取得更廉价的硬件成本、同时在效率上竟然超过了Elastic…...

前端对于深拷贝和浅拷贝的应用和思考

浅拷贝 浅拷贝 &#xff1a; 浅拷贝是指对基本类型的值拷贝&#xff0c;以及对对象类型的地址拷贝。它是将数据中所有的数据引用下来&#xff0c;依旧指向同一个存放地址&#xff0c;拷贝之后的数据修改之后&#xff0c;也会影响到原数据的中的对象数据。最简单直接的浅拷贝就…...

Unity项目瘦身实战:彻底搞懂Library文件夹,轻松清理几十个G的缓存

Unity项目瘦身实战&#xff1a;彻底搞懂Library文件夹&#xff0c;轻松清理几十个G的缓存 当你打开资源管理器&#xff0c;发现Unity项目的Library文件夹已经吞噬了50GB磁盘空间时&#xff0c;那种窒息感就像发现衣柜里塞满了十年没穿过的旧衣服。这个隐藏在项目根目录下的&quo…...

安全工程师的‘副驾驶’:手把手配置Xray+YAML,打造你的专属Web扫描策略

安全工程师的‘副驾驶’&#xff1a;手把手配置XrayYAML&#xff0c;打造你的专属Web扫描策略 在渗透测试和红队行动中&#xff0c;Web扫描器就像安全工程师的"副驾驶"&#xff0c;而Xray无疑是当前最受青睐的选择之一。但很多工程师在使用过程中都会遇到这样的困扰&…...

别再死记硬背!用Python+OpenCV实战推导相机内外参与FOV公式(附代码)

用PythonOpenCV实战推导相机内外参与FOV公式&#xff1a;从代码中理解数学本质 在计算机视觉领域&#xff0c;相机参数的数学推导常常让开发者陷入公式记忆的困境。本文提供一种全新的学习路径——通过Python代码动态模拟相机成像过程&#xff0c;将抽象的数学公式转化为可交互…...

告别 Origin 内卷|虎贲等考 AI 科研绘图,一键出期刊级学术图

很多做毕业论文、发期刊、做课题的同学和科研人&#xff0c;都卡在同一个难题上&#xff1a;论文写得再好&#xff0c;却栽在科研绘图上。想用专业软件&#xff0c;Origin、Visio、GraphPad 上手难、参数复杂、调试半天出不来一张合格图&#xff1b;用 Excel、PPT 随手做图&…...

三指拖拽革命:在Windows上解锁macOS级触控板体验的终极指南

三指拖拽革命&#xff1a;在Windows上解锁macOS级触控板体验的终极指南 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFingersD…...

规范驱动开发:基于OpenAPI与LLM的现代API构建实践

1. 项目概述&#xff1a;一个基于规范驱动的现代API开发实践最近在GitHub上看到一个挺有意思的项目&#xff0c;叫izzymsft/spec-driven-dev-backend-apis&#xff0c;它是一个用FastAPI构建的客户管理后端REST API。这个项目本身的功能——客户和地址的CRUD操作&#xff0c;结…...

Cursor编辑器Markdown实时预览插件CursorMD深度解析与实战指南

1. 项目概述&#xff1a;当代码编辑器遇上Markdown预览如果你和我一样&#xff0c;日常开发的主力工具是Cursor&#xff0c;同时又经常需要撰写技术文档、项目README或者个人博客&#xff0c;那你一定体会过那种在编辑器、浏览器和笔记软件之间反复横跳的割裂感。Cursor作为一款…...

从ARM到FPGA:手把手教你用Vivado双口RAM IP核搭建跨芯片通信桥

从ARM到FPGA&#xff1a;构建高性能双口RAM通信桥的工程实践 在异构计算架构中&#xff0c;FPGA与处理器的协同工作已成为提升系统性能的关键方案。Xilinx Vivado工具链中的双口RAM IP核&#xff0c;为解决跨芯片数据交换提供了硬件级的优雅实现。本文将深入探讨如何将这一技术…...

PS4游戏存档管理终极指南:如何使用Apollo工具轻松备份和修改游戏进度

PS4游戏存档管理终极指南&#xff1a;如何使用Apollo工具轻松备份和修改游戏进度 【免费下载链接】apollo-ps4 Apollo Save Tool (PS4) 项目地址: https://gitcode.com/gh_mirrors/ap/apollo-ps4 在PlayStation 4游戏体验中&#xff0c;游戏存档管理一直是个让玩家头疼的…...

如何利用League Akari提升英雄联盟游戏体验:完整指南

如何利用League Akari提升英雄联盟游戏体验&#xff1a;完整指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否曾在英雄联盟游戏中因为…...