- 博客(109)
- 资源 (1)
- 问答 (3)
- 收藏
- 关注
原创 selenium官网文档阅读总结(day 4)
在自动化测试中,等待是一个重要的概念,你要等待页面加载完成、元素可见、元素存在等条件满足后再执行操作。:在测试开始前,需要实例化一个特定浏览器的webdriver对象,这个webDriver对象可以控制一个真实的浏览器实例。:selenium可以与不同的测试框架(如junit,testNG,pytest等)集成,以实现更结构化和可管理的测试。不同的浏览器需要相应的WebDriver实现。:通过webdriver对象,你可以执行一系列模拟用户操作,如点击按钮、输入文本、提交表单、导航到不同页面等。
2023-08-10 11:58:35
1842
原创 selenium自动化特殊场景
很不稳定,只要元素前面多出元素就可能影响元素定位的准确性。在selenium里面,每一个iframe和网页本身都是被分割开来的独立部分,必须一层一层进入到iframe,才能看到。XPath 使用路径表达式来选取 XML 文档中的节点或者节点集,包括绝对路径和相对路径。以一个元素为轴,寻找其父元素,子元素,兄弟元素。若网页打开了新窗口,你希望在新打开的窗口上定位操作元素,就必须把窗口切换过去。
2023-08-07 11:56:46
310
原创 selenium官文文档阅读总结(day 3)
在做UI自动化的时候,主要是基于系统的流程来实现的自动化,往往是下一步需要依赖上一步的特定条件才能继续执行。考虑到运行的时间问题和执行的步骤问题,在执行自动化测试的时候,是需要设置缓冲时间的。在最大的等待时长内,依照查找的时间频率来进行搜索,查找指定的对象。3.隐式等待——设置一个隐形的等待,和一个最长等待时间,在这个时间内如果完成了页面的加载,就进行下一步,否则一直等到该时间结束,再进行下一步。这些功能函数,我们就称为关键字。通过关键字,做对应的功能动作,从而实现自动化,称之为关键字驱动的自动化。
2023-08-04 10:25:03
1005
原创 selenium官网文档阅读总结(day 2)
(1)xpath: xpath是一种在xml中定位元素的语言。当我们使用chormdriver打开网页后,接下来就要用python操作元素,模拟用户会作出的操作,这些操作元素的方法就是命令。推荐使用的两种方法是id和xpath,原因是id具有唯一性,但由于不是所有元素都有id,也推荐使用更具有通用性的xpath。可以用点代替空格值。(7)name:如果多个元素拥有相同的name属性,那么将定位第一个具有该name属性的元素。(8)tag: 当网页有多个相同的tag标签,那么将定位第一个该tag名称的元素。
2023-08-01 21:14:54
758
原创 selinum官网文档阅读总结(day 1)
selinum是一套包含了脚本录制,脚本处理,协议规范的自动化测试工具集。其中协议规范里,典型的有web页面操作规范RC和WebDriver。以界面搜索框为例,右击点“检查”,源码中搜索框的html源码就会加亮提示,于是我们可以知晓,搜索框的id是kw,name是wd,后续我们就可以根据id/name对搜索框元素定位和操作了。下载的driver只需大版本和chorme一致即可,我下载的是114.0.5735.90。chrome浏览器自动打开博客园首页,说明脚本执行成功了。
2023-07-31 19:30:06
304
原创 测试入门——集成测试
集成测试是在单元测试的基础上,将所有函数按照概要设计要求组装成为系统或子系统所进行的测试;集成测试和单元测试是不同的,因此,它们在发现问题的集合上包含有不相交的区域,相互之间不可替代;集成测试,也叫组合测试、联合测试、子系统测试或部件测试集成测试的关注点是单元间的接口和集成后的功能。也就是说,集成测试主要是检查不同模块代码之间的相互调用,以及模块对关联模块的相互影响。集成测试的主要策略有九种,包括大爆炸集成、自顶向下集成、 自底向上集成、三明治集成、基干集成、分层集成、基于功能的集成、基于消息的集成 、基于
2022-06-21 20:48:12
2537
原创 windows系统下的python环境搭建
搜索框输入python download,打开第一个搜索结果。Python下载网址 install now:搜索框输入pycharm download,依然打开第一个搜索结果。pycharm下载地址
2022-06-19 22:53:17
201
原创 测试入门——Jmeter的安装与使用
一.前言秋招冲刺银行失败,春招拿了某中厂的产品测试offer,所以本人以后就是测试工程师啦。对测试感兴趣的、和我一样的萌新小伙伴可以关注我,我们一起学起来,等入职之后就轻松多了,诶嘿^_^二.Jmeter是什么Jmeter是一款常用的接口测试工具!常见的接口包括了内部接口与外部接口。内部接口是指被测系统各个子模块之间的接口,或者被测系统提供给内部系统使用的接口。外部接口是指被测系统使用的第三方接口,或者被测系统留给外部系统使用的接口。接口测试的重点:1.检查接口参数传递的正确性、接口功能的正
2022-04-12 18:15:07
3499
原创 OSI七层模型
一.什么是OSI参考模型国际标准化组织(ISO)提出的网络体系结构模型,称为开放系统互连参考模型(OSI/RM),通常简称为OSI参考模型.OSI七层模型自下而上依次为物理层、数据链路层、网络层、传输层、会话层、表示层,应用层。低三层统称为通信子网,它是为了联网而附加的通信设备,完成数据的传输功能;高三层为资源子网,完成数据的处理功能。简记为:“低传输,高处理”。二.各层的功能1.物理层意义——物理层实现在计算机网络中的各种硬件设备和传输介质上传输数据比特流,将比特从一个结点移到下一个节点;
2022-03-20 21:42:00
15696
原创 Java类加载器
目录0.知识储备——JVM内存分区&双亲委派机制1.Java类加载机制1.1核心类加载器启动原理类加载的含义:类加载过程:1.类的加载2.类的连接3.初始化1.2类加载的双亲委派机制2.类加载器的类型3.自定义类加载器的实现0.知识储备——JVM内存分区&双亲委派机制双亲委派——类加载器默认不直接对字节码文件进行加载,而是交给它的上一级类加载器,递归这个操作,如果上一级没有加载,它自己才回去加载。这篇文章向我们介绍了双...
2022-02-27 23:16:20
649
2
原创 使用viewpager2时Fragment中的设置
背景:这两天在使用viewPager2的时候,我像以往那样把onCreateView和onCreate方法往fragment里面壹佰,初始化控件的时候,getActicity().findviewByid(),对象居然是空指针。难道我和activity绑定失败了?我这样想到,检查adapter,没啥问题呀。查一下资料,viewpager2里面实现了懒加载,那么在fragment里面也必须要有相应的懒加载实现,onResume生命周期是必须的。上代码:public class HomeFragm
2022-02-15 15:22:23
2010
原创 androidx采用viewPager2+TabLayout实现fragment切换
依赖引入 implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation "com.google.android.material:material:1.1.0"布局文件<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/
2022-02-12 02:38:48
828
原创 关于Java锁的二三事
闲聊扯皮部分(可跳过)最近真是泪目了呀,家人们。就博客好久都没更新了,这不是没有原因的。博主今年不是应届毕业生嘛,就去参加秋招。之前整个8月份都一直在实习,等到八月底,结果没hc了,像猛然惊醒的梦中人一样,就慌不择路地开始投简历,九月初,真的有点迟了呀家人们,不过面试机会还是有一些的,但就是之前没准备啊,光幻想实习转正了,结果就各种挂,然后投了好多要笔试的,笔试又是狂挂。没办法呀,在家闭关学习了一阵子,hc又被卷走了一大批,好容易后来能进面试了,一轮游。本来学的客户端,但人家客户端宁可要零基础算法好的,
2021-11-17 23:10:23
647
1
原创 android非kotlin工程引用kotlin Module
背景:最近的需求需要用到公司那边提供的云服务,给出的实例,我经过反复观察确认那是一个module。并且使用的是kotlin语言。我小白,几乎没用过kotlin,也没咋引入过module到自己的项目里面。瞬间遭到了一个小小的挑战,然后下午踩了不少坑,好在公司大神多,在他们的指导下我总算顺利的引用了。下面,给大家复现一下当时那些奇奇怪怪的报错。library projects cannot set applicationId.我马上开始google,然后就把defaultConfig中对
2021-08-04 17:59:38
649
2
原创 This Activity already has an action bar supplied by the window decor.
报错日志:报错场景:@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);/**setcontentview处报错 */ setContentView(R.layout.activity_main); setSupportActionBar(findViewById(R.id.toolBar)).
2021-07-30 20:16:20
115
原创 Android将view转换为黑白图片
private Bitmap testAsBitMap(View view) { TextPaint textPaint = new TextPaint(); textPaint.setColor(Color.CYAN);// StaticLayout layout = new StaticLayout(s,textPaint,50,// Layout.Alignment.ALIGN_NORMAL, 1.3f, 0.0f,..
2021-07-29 17:12:51
467
原创 计算机组成原理
一.硬件组成部分 一.主存主存储器,简称主存,又称为内存,是计算机硬件的一个重要部件。其作用是存放指令和数据,并能由中央处理器(CPU)直接随机存取。主存储器由MAR,MDR,存储体三个部分组成。数据在存储体内按地址存储,MAR位数反应存储单元的个数,MDR位数=存储字长。存储单元:每个存储单元存放一串二进制代码。存储字长:存储单元中二进制代码的位数。二.运算器计算机中执行各种算术和逻辑运算操作的部件。运算器的基本操作包括加、减、乘、除四则运算,与、或、...
2021-07-14 17:56:28
3096
1
原创 过滤器Filter
功能简介对数据的过滤和预处理过程。过滤器能够处理发送过来的所有请求,同时,它还可以对服务器返回的响应进行预处理,这样,大大减轻了服务器的压力。
2021-06-15 20:40:29
748
原创 Servlet学习笔记
概念servlet是javaServlet的简称,用java编写的运行在web服务器或应用服务器上的程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成动态web
2021-06-10 21:17:54
261
3
原创 软件工程课设III——DAY2
解决问题1.为解决mysql闪退的问题,经过分析推敲后卸载重装了mysql。2.报错:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`******`' at line 1mysql> ALTER USER USER() IDENTIFIED BY '******';
2021-06-02 19:13:51
161
1
原创 软件工程课设III——DAY 1
解决问题1.github无法访问具体方法:github无法访问的原因在于该网站修改了IP地址。在hosts文件中备案新网址即可恢复访问。tips:hosts文件
2021-05-31 12:42:02
417
原创 大二android实习网易一面+二面面经
一面问题一.介绍一下你自己?回答:从我是谁,我来自哪里,我什么时候开始学的安卓,我的兴趣爱好是什么这几个角度进行了介绍。问题二.做过什么项目?回答:如实回答了我做过的主要项目。问题三.讲述一下mvp和mvvvm?回答:mvp是由mvc改进来的,区别在于view和model不进行直接交互,而是交给presenter来处理。从而降低了代码耦合性。mvp中随着业务的增加,会有非常多UI相关的case。这样就会造成view的接口很庞大。而MVVM就解决了这个问题。通过双向绑定的机
2020-06-06 10:06:27
556
原创 自定义EditText自设样式并带有下拉选择框的实现
先上一张效果图:在drawable目录下建一个xml:<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item> <shape xmlns:android="http://schemas.android.com/apk/res/android"
2020-05-21 22:34:49
743
原创 leetcode四月二十五日解题
动态规划法逆过程从终点开始看有几种走法,finish可能是往下走或者往右走得到的,因此finish一格有两种走法....一直这样退回去public int uniquePaths(int m, int n) { if(m==0||n==0) return 0; int[][]dp = new int[m][n]; dp[0][0]=1; ...
2020-04-25 20:15:10
163
原创 leetcode翻转对(归并排序法)
看到这道题你可能第一反应是下面这段代码: public int reversePairs(int[] nums) { int res=0; for(int i=0;i<nums.length;i++){ for(int j=i+1;j<nums.length;j++){ if(i<j&&a...
2020-04-22 10:01:38
345
原创 最长连续序列
❤本题不是很好想,具体思路我已经录制视频上传到抖音账号:王玥遥上了,需要自取❤class Solution { public int longestConsecutive(int[] nums) { if(nums.length==0) return 0; if(nums.length==1) return 1; HashMap<Integ...
2020-04-20 23:45:52
266
原创 leetcode四月十九日解题
双指针法设置两个指针,一个指向第一条垂直线,一个指向最后一条垂直线,记录最大面积为area,area初始值等于n*Math.min(A0,An),然后比较左右两根垂直线哪一条更短,更短的向中间移动,计算新的面积值然后如果比原本的面积更大就更新area.public int maxArea(int[] height) { int i=0,j=height.length-1; ...
2020-04-19 22:40:26
201
原创 leetcode第五题:最长回文子串
一开始的错误想法后缀数组法:把S倒置过来得到S’,然后将他们拼接在一起得到字符串T,在T的最中间插入一个字符串中没有的符号+,遍历这个字符串T,发现加号之前有跟后面一毛一样的子字符串,输出。错误点:对于ABCDETFDCBA这样的字符串,遍历得出的最长回文子串将会是ABCD,但实际上最长子串长度仅为1.动态规划法对于所给的字符串s,假设dp[i][j]=true表示字符串s[i...j...
2020-04-18 23:05:18
191
原创 Tinker热修复
Tinker核心原理一.基于android原生的classLoader开发了自己的classLoader二.基于安卓原生的aapt,开发了自己的aapt三.微信团队自己基于Dex文件开发了DexDiff算法ART和dalivk的区别ART 的机制与 Dalvik 不同。在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器(just in time ,JIT)转换为机...
2020-03-12 22:28:59
271
1
原创 Fragment完全总结
一.动态添加fragment第一步,动态创建管理器对象第二步,获取fragment的事务对象并开启第三步,调用事务中相应的动态操作fragment方法的执行第四步,提交事务二.静态添加fragment1、继承Fragment,重写onCreateView决定Fragemnt的布局2、在Activity中声明此Fragment,就当和普通的View一样三.frag...
2020-02-19 18:23:03
2073
原创 数据结构——堆
堆的定义:堆中某个结点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树;将根节点最大的堆叫做最大堆或者大根堆;根节点最小的堆叫做最小堆或者小根堆。下图演示了如何从最大堆中取出堆顶元素...
2020-02-11 18:29:54
126
原创 数据结构——二分搜索树的实现
public class BST<E extends Comparable<E>> { private class Node{ public E e; public Node left,right; //构造函数,让用户传入的参数e等于这里的e public Node(E e){ this.e=e; left=null; right=n...
2020-02-10 14:37:40
188
原创 数据结构——链表的实现
public class LinkList<E> { private class node{ public E e; public node next; public node(E e,node next){ this.e=e; this.next=next; } public node(E e){ this(e,null); } ...
2020-01-29 13:24:34
257
原创 数据结构——数组队列与循环队列的实现
一.数组队列数组队列第一个元素出队,后面的元素要全部向前移动一位,同时size--,因此出队的时间复杂度是O(n)的复杂度。还是复用自己封装的动态数组:public class ArrayQueue<E> implements Queue { private MyArray<E> array; @Override public int getSiz...
2020-01-28 16:18:46
210
原创 数据结构——Stack的二次封装
public interface Stack<E> { int getSize(); boolean isEmpty(); void push(E e); E pop(); E peek();}import java.lang.reflect.Array; class ArrayStack<E> implements Stack<E&g...
2020-01-27 20:58:45
161
TA创建的收藏夹 TA关注的收藏夹
TA关注的人