自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(315)
  • 资源 (4)
  • 收藏
  • 关注

原创 Python Selenium常用方法

文章目录1.浏览器网页调试2.元素定位1.浏览器网页调试在 Chrome浏览器中,点击鼠标右键,在弹出的快捷菜单中选择“检查”选项;在弹出的调试信息窗口中,点击按钮后,将鼠标移动到需要定位的目标位置,调试信息窗口中就会显示元素的属性。以对百度搜索页面的测试为例,在调试信息窗口中点击[插图]按钮后,将鼠标移动到百度搜索输入框上,屏幕上就会显示元素属性。如图百度搜索输入框的元素属性 ID 为 kw,NAME 为wd,CLASS_NAME为s_ipt。或者进 选项>更多工具>开发者工具然

2021-01-14 17:57:05 254

原创 用ADB命令写Android自动化测试脚本

文章目录1.脚本来执行测试的优缺点2.实现原理3.实现难度4.屏幕适配5.测试过程6.简单的运用1.脚本来执行测试的优缺点写起来容易基本上可以实现90%以上的功能性覆盖测试结果需要通过自己观察整个过程和日志文件来得出的有些外部的动作,脚本是无法实现的,比如需要录入指纹只适配特定尺寸的设备没法对内容进行校验执行命令间隔时间要把控好2.实现原理Espresso比较起来,其实原理是差不多的,都是模拟输入事件来操作程序;脚本是用adb命令来实现点击哪一个位置,位置需要自己测量,而Espres

2021-01-13 16:57:03 2415

原创 MySQL安装教程

mysql-8.0.15-winx64安装教程网上的教程有很多,基本上大同小异。但是安装软件有时就可能因为一个细节安装失败。我也是综合了很多个教程才安装好的,所以本教程可能也不是普遍适合的。安装环境:win101、下载zip安装包:https://dev.mysql.com/downloads/file/?id=4849002、安装2.1解压zip包到安装目录我的解压在了E:\MySQL8\mysql-8.0.15-winx64解压后的文件目录2.2 配置环境变量.

2021-01-10 10:34:40 7609 1

原创 软件测试学习路径汇总

文章目录1.软件测试理论1.1 软件相关概念1.2 软件测试经典实例1.软件测试理论1.1 软件相关概念软件相关概念1.2 软件测试经典实例软件测试经典实例项目:杯子

2021-01-08 15:52:31 1113

原创 软件测试经典实例项目:杯子

测试类型测试项目:杯子需求测试:查看杯子使用说明书界面测试:查看杯子外观功能度:用水杯装水看漏不漏;水能不能被喝到安全性:杯子有没有毒或细菌抗破坏性:杯子从不同高度落下的损坏程度可移植性:杯子再不同的地方、温度等环境下是否都可以正常使用兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等易用性:杯子是否烫手、是否有防滑措施、是否方便饮用用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述疲劳测试:将杯子盛上水(案例一)放24小时检查泄漏时间和情况;盛上汽油(

2021-01-08 15:48:16 1291

原创 软件相关概念

文章目录1.软件生命周期2.软件质量概念软件质量的度量和评价软件质量保证的概念软件质量检验的原则软件质量保证规程和技术准则软件质量目标与度量影响软件质量的因素1.软件生命周期软件生命周期:软件的产生直到报废的整个过程。软件生命周期内容:问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到报废等阶段。问题的定义及规划:此阶段是软件开发方向与需求方共同讨论,主要确定软件的开发目标及其可行性。需求分析:在确定软件开 发可行的情况下,对软件需要实现的各功能进行详细分析

2021-01-08 15:41:46 373

原创 Python+selenium环境搭建步骤

文章目录1.selenium的安装2.chrome浏览器3.安装chrome浏览器驱动4.接下来就可以开启selenium自动化之旅了1.selenium的安装selenium可以通过pip命令进行安装,安装方法如下:打开cmd窗口输入:pip install selenium等待cmd窗口提示successful,则selenium安装成功,如中途中断了继续输入pip install selenium重新安装,不影响!2.chrome浏览器目前网上谷歌浏览器下载的坑太多了,很

2021-01-08 11:52:19 333

原创 Android LifeCycle详解

文章目录1.1 LifeCycle的诞生1.2 LifeCycIe的原理1.3 在Activity中使用1.4 使用LifecycleService解耦Service与组件1.5 使用ProcessLifecycleOwner监听应用程序的生命周期ProcessLifecycIeOwner存在的意义ProcessLifecycIeOwner的具体使用方法1.1 LifeCycle的诞生解耦是软件开发中永恒的话题。在Android应用程序开发中,解耦很大程度上表现为系统组件[1]的生命周期与普通组件[2]

2021-01-07 16:06:54 11665 7

原创 Android使用UiAutoMator2进行自动化测试

文章目录介绍安装初始化测试定位元素:UiAutoMator2地址GitHub地址:https://github.com/openatx/uiautomator2介绍uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库。其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,但有两个缺点:1、测试脚本只能使用Java语言。2、测试脚本必须每次被上传到设备上运行

2021-01-07 09:32:12 521 1

原创 Android组件化开发;

Android组件化开发;组件化开发:优点嘛,项目过大时便于管理;1、在根目录的gradle.properties文件下添加isBuildModule=false;使用isBuildModule来控制这个是Library还是独立的APP;2、创建一个新的Module,在其build.gradle中添加:if (isBuildModule.toBoolean()) { apply plugin: 'com.android.application'} else { .

2021-01-05 16:10:19 184

原创 Android MVVM 模式

1.MVVM模式分为Model,View,ViewModel 三个部分(1).Model:数据层,包含数据实体和对数据实体的操作(2).View:界面层,对应于Activity,XML,View,负责数据显示以及用户交互。(3).ViewModel:关联层,将Model和View进行绑定,Model或者View更改时,实时刷新对方。注意点1.View只做和UI相关的工作,不涉及任何业务逻辑,不涉及操作数据,不处理数据。UI和数据严格的分开2.ViewModel只做和业务逻辑相关的工作,不涉

2021-01-05 11:17:36 5058

原创 Android Handler内存泄露

文章目录一、什么是内存泄露?二、内存泄露的危害三、解决方案四、总结一、什么是内存泄露?Java使用有向图机制,通过GC自动检查内存中的对象(什么时候检查由虚拟机决定),如果GC发现一个或一组对象为不可到达状态,则将该对象从内存中回收。也就是说,一个对象不被任何引用所指向,则该对象会在被GC发现的时候被回收;另外,如果一组对象中只包含互相的引用,而没有来自它们外部的引用(例如有两个对象A和B互相持有引用,但没有任何外部对象持有指向A或B的引用),这仍然属于不可到达,同样会被GC回收。Android中使用

2021-01-04 12:24:56 182 1

原创 Android基础知识汇总

文章目录1.Activity1.Activity启动模式2.IntentFilter的匹配原则1.Activity1.Activity启动模式Activity启动模式2.IntentFilter的匹配原则IntentFilter的匹配原则

2021-01-03 17:55:04 266

原创 Java排序算法___选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择

2021-01-03 09:08:47 92

原创 Android布局优化

文章目录布局优化1.布局优化简介2.使用include 和merge标签减少复用布局而产生的布局嵌套,使用ViewStub懒加载减少渲染元素2.ViewStub标签的使用姿势总结如下布局优化1.布局优化简介避免ui布局优化可以先从合理使用背景色开始,比如:如果子view和父布局公用一个背景色就没有必要了。减少不必要的嵌套,一般建议不超过5层合理使用各种布局,尽量使用LinearLayout和FrameLayout,因为RelativeLayout在进行message时会执行两次,而LinearL

2021-01-02 22:29:25 152

原创 Android启动流程汇总

一,android系统架构andorid系统架构从上到下分别有应用层、应用框架层、系统运行时库层、硬件抽象层、Linux内核层。 应用层:包括系统应用比如闹钟、日历等这些在内的以及非系统级别的应用都属于应用层。负责用户交互,也就是我们需要开发的东西。 应用框架层:这一层主要是为咱们开发人员提供用来开发应用程序的API,平常我们开发程序大部分都是调用这部分的API来进行开发。这一层主要提供一些ActivityManager 管理应用生命周期、locationManager ...

2021-01-01 21:11:49 293

原创 解决Windows下appium-doctor报各种 cannot be found问题

环境安装可以直接参考其他博主的文章,链接:环境配置安装这里重点解决的问题是can not found问题。上面是我引用了网上的图片,一开始我也是报这些警告,因为安装好了,所以没有报警告,为了大家方便查看,找了这张图片。opencv4nodejs can not found,自动编译安装方法(1)安装cmake并配置环境变量如果需要安装包可以点击下方链接link:cmake安装包环境安装和配置参考下面的文档link:cmake安装配置(2)安装git并配置环境变量link:G..

2020-12-24 17:14:16 793 1

原创 windows下搭建Appium环境时手动安装opencv4nodejs依赖

安装appium用npm直接安装:npm install -g appium ,安装完成后将appium可执行文件所目录添加到环境变量,例如:C:\Program Files\nodejs\node_modules\appium\node_modules.bin 这种方法可能会因为网络问题中断失败 下载appium的客户端压缩包,解压后配置环境变量安装appium-doctor由于现在appium-doctor不内置到appium中了,可以直接cmd命令行安装:npm install -g a

2020-12-24 15:14:14 354

原创 Appium+python自动化2-环境搭建(下)

前言 上一篇android测试开发环境已经准备好, 接下来就是appium的环境安装了。环境安装过程中切勿浮躁,按照步骤一个个来。 环境装好后,可以用真机连电脑,也可以用android-sdk里面的模拟器(当然这个模拟器不是很好用),我一般喜欢真机,真机比较快。一、必备软件安装小编的环境是Windows 7版本 64位系统(32位的同学自己想办法哦) 1.jdk1.6.0 (64位) 2.android-sdk_r24.3.4-windows 3.py...

2020-12-18 13:58:30 152

原创 Appium+python自动化1-环境搭建(上)

前言 appium可以说是做app最火的一个自动化框架,它的主要优势是支持android和ios,另外脚本语言也是支持java和Python。小编擅长Python,所以接下来的教程是appium+python的实例。学习appium最大的难处在于环境的安装,80%的人死于环境安装,然后就没然后了,10%的人被环境折腾一周以上,只有剩下的10%人品好,可以顺利安装。一、环境准备小编的环境是Windows 7版本 64位系统(32位的同学自己想办法哦) 1.jdk1.6...

2020-12-18 13:53:29 116

原创 Appium 1.15.1版本的appium-doctor不是内部或者外部命令的问题的解决办法

appium-doctor 这个也是要额外安装,安装方法如下,全部在命令窗口中操作的:1.npm install -g cnpm --registry=https://registry.npm.taobao.org #所以通过国内静像安装cnpm2.cnpm install -g appium-doctor  #通过cnpm命令安装appium-doctor3.appium-doctor  #查看apium的环境配置情况由此可以看到,appium-doctor 这个全部是通过cnp

2020-12-18 13:49:17 322

原创 解决java环境变量配置不生效

解决java环境变量配置不生效【问题】:  我们的电脑可能安装了多个jdk版本,我们在环境变量中也设置了JAVA_HOME环境变量,但是java -version的时候不是我们配置的环境变量中的jdk版本 【分析】:  我们可以使用命令where java来查看,可以看到有多个路径  我们在安装新的jdk的时候(1.8+版本),会自动的在C:\ProgramData\Oracle\Java\javapath\下新建几个文件,而这个...

2020-12-17 16:33:03 7163 1

原创 Java提高篇-----集合之ArrayList与LinkList

Collection集合体系List、Set、Map是集合体系的三个接口。其中List和Set继承了Collection接口。List有序且元素可以重复,默认大小为10;ArrayList、LinkedList和Vector是三个主要的实现类。Set元素不可以重复,HashSet和TreeSet是两个主要的实现类。Map也属于集合系统,但和Collection接口不同。Map是key-value键值对形式的集合,key值不能重复,value可以重复;HashMap、TreeMap和H

2020-09-13 21:49:30 225

原创 Java提高篇——equals()与hashCode()方法详解

文章目录equals()方法详解hashcode() 方法详解Hashset、Hashmap、Hashtable与hashcode()和equals()的密切关系java.lang.Object类中有两个非常重要的方法:public boolean equals(Object obj)public int hashCode()Object类是类继承结构的基础,所以是每一个类的父类。所有的对象,包括数组,都实现了在Object类中定义的方法equals()方法详解equals()方法是用来判断其

2020-09-11 23:04:10 203

原创 快速排序法_______Java

高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列中所有比基准数大的数放在6的右边,比基准数小的数放在6的左边,类似下面这种排列:3 1 2 5 4 6 9 7 10 8在初始

2020-07-27 19:48:36 137

原创 Git clone时报错处理

提交代码到码云,Git报错如下:fatal: Authentication failed for 'https://gitee.com/......'很明显说明码云的认证失败,即用户名,密码输入错误。使用如下指令重置用户名密码:git config --system --unset credential.helper然后再次提交,重新输入用户名密码即可...

2020-07-26 22:46:29 270

原创 Java基础思维导图

2020-06-23 17:50:44 307

原创 git 查看远程分支提交信息,不合并

1.首先查看远程分支:git branch -r2.使用fetch命令,将远程分支拉下来(不更新)git fetch origin master3.切换到远程分支git checkout origin/master4.查看该远程分支更改日志git log5.根据上面查出来的commit id查看提交信息git show 后面加上 commit后面的id...

2020-06-13 15:36:41 2108

原创 Java多线程基础

文章目录1.线程和进程概念2.java线程中常用的方法3.线程的创建1. 继承Thread类创建线程类2. 通过Runnable接口创建线程类3. 通过Callable和Future创建线程4.线程有哪些状态5.创建线程池的几种方式创建方式线程池有5种状态:Running、ShutDown、Stop、Tidying、Terminated1.线程和进程概念1.一个任务通常就是一个程序,每个运行中的程序就是一个进程。当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。多线程是扩展

2020-06-13 15:20:31 136

原创 Java常用面试题

一、Java 基础1. JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环境。具体来说 JDK 其实包含了 JRE,同时还包含了编译 java 源码的编译器 ja...

2020-06-13 15:05:18 213

原创 String、StringBuilder、StringBuffer的区别

String,StringBuilder以及StringBuffer这三个类之间有什么区别这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String  String最慢的原因:String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更

2020-06-08 20:53:43 135

原创 Java基础(一) 八大基本数据类型

Java基础(一) 八大基本数据类型自从Java发布以来,基本数据类型就是Java语言的一部分,分别是byte, short, int, long, char, float, double, boolean.其中:整型:byte, short, int, long字符型:char浮点型:float, double布尔型:boolean在详细介绍之前,先科普一下,Java中最小的计算单元为字节,1字节=8位(bit)。一. 整型Java中整型数据属于有符号数,即第一个bit

2020-06-07 12:21:47 693

原创 排序算法----冒泡排序法

冒泡排序法※ 冒泡排序法原理对数组进行排序,冒泡排序法的原理就是将一组无序数组进行排序,同过把值较小的数逐渐向数组的顶部(即朝第一个元素)冒出来,就像水中的气泡上升一样。同时,值较大的数据逐渐向数组的底部(即朝最后一个元素)沉下去。这种算法用嵌套的循环对整个数组进行数次遍历,每次遍历都要比较数组中相邻的一对元素,如果这对元素以升序(或者值相等)的顺序排列,那么保持它们的位置不变;如果这对元素以降序的顺序排列,那么交换他们的值。图解:如图是一个共有15个数的无序数组,所以需要进行14次(n-1)

2020-05-28 15:10:39 824

原创 排序算法-------插入排序法

插入法排序※ 插入法排序原理利用插入法对无序数组排序时,我们其实是将数组R划分成两个子区间R[1..i-1](已排好序的有序区)和R[i..n](当前未排序的部分,可称无序区)。插入排序的基本操作是将当前无序区的第1个记录R[i]插人到有序区R[1..i-1]中适当的位置上,使R[1..i]变为新的有序区。因为这种方法每次使有序区增加1个记录,通常称增量法。插入排序与打扑克时整理手上的牌非常类似。摸来的第1张牌无须整理,此后每次从桌上的牌(无序区)中摸最上面的1张并插入左手的牌(有序区)中正确的位置上

2020-05-28 14:52:18 866

原创 android adb常用命令汇总

adb命令安装APKadb install -r apk目录

2020-04-23 15:29:17 156

原创 NDK基于CMake构建HelloWord

文章目录1.构建NDK开发环境2.新建CPP源文件夹3.新建java调用类4.新建c源程序文件5. 创建CMakeLists.txt6. 配置gradle7. 调用1.构建NDK开发环境在Android Studio目录里面点击File-> Project Structure,选择SDK Location2.新建CPP源文件夹将项目目录视图,切换到project视图,在main目录...

2020-04-23 14:07:16 390

原创 Kotlin基础语法

1.包的定义与导入定义包 package 关键字package my.demo导入包 import 关键字import kotlin.text.*2.变量、函数、类var name="zz"val h="ss" //val 用来定义常量,常量不能重新赋值 //Unit 无返回值,也可以不写fun add(a:Int,b:Int):Int{ return a...

2020-04-21 16:41:31 371

原创 Lambda常用用法

Lambda在对Java8 发布的Lambda表达式进行一定了解之后,发现Lambda最核心的就是 结合Stream API对集合数据的遍历、提取、过滤、排序等一系列操作的简化,以一种函数式编程的方式,对集合进行操作。下面总结了几种常用的示例Demo;Lambda表达式的语法基本语法:(parameters) -> expression或...

2020-01-10 15:40:56 836

原创 win10开机后一分钟重启解决办法

进安全模式 用电脑管家杀下毒然后重启还不行就重置网络操作如下在安全模式开始,运行输入cmd回车netsh winsock reset回车

2020-01-10 14:34:55 362

原创 Android性能优化

性能优化的目标 在网上也看到过很多相关的文章,他们基本总结为:快,稳,省,小,描述的很准确.如下图(注:此图不知道啥时候收集的人,如有侵权,立删):快 如何让app在运行过程过不卡顿,运行流畅,速度快,也就是说如何解决卡顿呢?我们先看看那些因素影响卡顿?1. UI,包括ui的绘制,刷新等2. 启动,包括冷启动,热启动,温启动等3. 跳转,页面跳转...

2020-01-10 14:34:34 140

AIDLDemo的代码示例

AIDL ,android跨进程通信示例,包括服务端,客户端,以及权限检测

2018-01-15

android的IBinder简单使用

android中IPC机制的IBinder简单使用,简要说明下IBinder中两个重要方法

2018-02-26

AIDl跨进程客户端与服务端互相通信

使用AIDL进行跨进程实现客户端与服务端互相通信的demo

2017-03-31

android高级编程

一本用于android开发进阶的书籍,android高级编程pdf

2015-12-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除