- 博客(84)
- 收藏
- 关注
原创 web自动化:元素等待
由于网络速度慢、服务器处理请求慢、电脑配置低等原因,在web自动化过程中常常需要使用到元素等待。那么什么是元素等待呢?在定位元素时,如果定位到元素,则会直接返回该元素,不触发等待。如果没有定位到元素,则间隔一段时间后再去定位元素。在定位元素时,如果未找到,会在指定时间内一直等待的过程,就是元素等待。元素等待分为两种:分别是隐式等待和显式等待。隐式等待是全局设置,只需要设置一次,就会作用于所有元素。在等待时间内页面没有加载完成,时间一到也会进行下一步操作,这种情况可能出现要定位的元素没有出现,从而报找
2025-04-16 13:42:09
424
原创 web自动化:cookie
客户端请求服务器时,服务器会向客户端浏览器颁发一个cookie以记录用户状态。浏览器再次请求该网站时,浏览器会将请求和cookie一同提交给服务器,服务器检查cookie,以此来辨认用户状态。本文将学习cookie的获取和添加,可以用来绕过登录等操作。总结
2025-04-15 13:30:59
317
原创 web自动化:6种窗口截图方法、文件打开形式、文件路径及时间戳命名
本文主要介绍6种窗口截图方式及源码分析,其中包括整屏截图和根据定位的元素截取相应的图片。此外,在窗口截图方法种还用到了文件路径、时间戳命名、文件打开方式等,在文中也将简单的做介绍。常用的窗口截图方法是get_screenshot_as_file(filename)和save_screenshot(filename),这两种方法可以直接生成图片。get_screenshot_as_png()和get_screenshot_as_base64()不能直接生成图片,需要进行进一步的操作。使用该方法截图后的图片
2025-04-15 13:30:16
777
原创 web自动化:frame切换、多窗口切换
web自动化:frame切换、多窗口切换driver.switch_to.frame(frame_reference),其中,frame_reference可以是frame框架的id、name或定位到的frame元素在frame中切换到其他页面前,必须要回到默认页面,才能进行下一步操作。否则,会报错:selenium.common.exceptions.NoSuchFrameException: Message: myframe2恢复到默认页面:driver.switch_to.default_con
2025-04-13 16:13:25
211
原创 web自动化:下拉选择框、弹出框、滚动条的操作
web自动化:下拉选择框、弹出框、滚动条的操作from selenium.webdriver.support.select inport SelectSelect(element)二、弹出框弹出框不处理的话,后续操作将不生效driver.switch_to_alert三、滚动条滚动条需要使用selenium调用执行javascriptjs = “window.scrollTo(0, 1000)”,其中0表示左边距、1000表示右边距driver.execute_script(js)总结
2025-04-13 15:33:49
432
原创 web自动化第三步:学习元素、浏览器、鼠标、键盘操作及获取元素信息
web自动化第三步:学习元素、浏览器、鼠标、键盘操作及获取元素信息常用的元素操作方法有以下几种:更改值之前,需要先清除原来的输入二、浏览器操作常用的浏览器操作方法有以下几种:三、获取元素信息常用的获取元素信息的方法有以下几种:四、鼠标操作需要导入的包:from selenium.webdriver import ActionChains使用鼠标操作需要实例化对象:action = ActionChains(driver)最后需要进行执行操作:perform()常用的鼠标操作方法有以下几种:五
2025-04-09 13:42:21
809
原创 web自动化第二步:学习8种元素定位方式
web自动化第二步:学习8种元素定位方式开启web自动化的第二步就是学会8种元素定位方式,其中包括根据元素属性定位(ID、NAME、CLASS_NAME)、根据元素标签定位(TAG_NAME)、根据超链接定位(LINK_TEXT、PARTIAL_LINK_TEXT)、根据元素路径定位(XPATH)、根据css选择器定位(CSS_SELECTOR)。二、实现方式driver.find_element(By.定位方式, “对应的值”)下面以百度为例,介绍8种元素定位方式。示例中的send_keys()
2025-04-02 13:26:32
897
原创 web自动化第一步:安装浏览器和驱动(Chrome和ChromeDriver)
开启web自动化的第一步就是安装浏览器及对应的驱动,由于浏览器版本和驱动需要对应,所以许多人也是卡在了第一步。这篇文章以Chrome为例,讲解如何安装浏览器及驱动,并附上113.0.5672.93版本的安装包。看完这篇文章后,我们将能够在五分钟内搞定谷歌浏览器Chrome和驱动ChromeDriver的安装,以及开启第一个web自动化。
2025-03-30 18:22:47
1397
原创 Java语言简介及数据类型
一、Java语言简介及数据类型1、八大基本类型2、整型溢出3、空指针异常4、精度丢失5、StringBuilder6、Strings7、Ints8、Joiner9、Splitter10、Objects11、CharMatcher12、Optional13、Function
2022-07-15 14:46:58
377
原创 Git常用命令
一、git init二、git clone三、git remote四、git status五、git log六、git reflog七、git config八、git diff九、git add十、git commit十一、git push十二、git fetch十三、git merge十四、git pull十五、git checkout十六、git reset十七、git revert十八、git cherry-pick十九、git rebase...
2022-07-12 21:15:33
361
原创 MySQL——MySQL数据库的基本操作
MySQL数据库一、关于MySQL二、创建数据库三、创建表四、插入数据五、查询数据1、查询所有数据2、统计表中有多少条数据3、分页查询六、修改数据七、删除数据八、备份九、还原十、开启Innodb...
2022-06-27 16:48:57
482
原创 Postman——接口测试的简介、分类、流程和用例设计
接口测试就是测试系统组件接口之间的一种测试。1、测试外部接口:测试被测系统和外部系统之间的接口。2、测试内部接口:① 内部接口只提供给内部系统使用② 内部接口提供给外部系统使用1、拿到接口api文档(如果没有,通过抓包工具获取),熟悉接口业务、接口地址、鉴权方式、入参、出参、错误码2、编写接口用例以及评审思路:① 正例:输入正常入参,接口能够成功返回数据② 反例:3、使用接口测试工具Postman执行接口测试4、Postman + Newman + Jenkins实现持续集成,并且输出测试报告、发送邮件..
2022-06-04 12:10:26
1498
原创 Linux——网络配置
Linux网络配置一、NAT网络配置示意图二、网络配置指令1、查看Linux的网络IP和网关2、查看windows环境中VMnet8网络配置3、查看Linux的网络配置4、ping测试主机之间网络连通性三、网络配置实例1、方法一:自动获取2、方法二:指定IP四、设置主机名和hosts映射1、设置主机名2、设置hosts映射五、主机名解析过程分析(Hosts、DNS)1、Hosts是什么?2、DNS是什么?3、以用户在浏览器输入www.baidu.com为例分析一、NAT网络配置示意图二、网络配置指令
2022-05-21 19:10:14
275
原创 Linux——磁盘分区、挂载
Linux磁盘分区、挂载一、Linux分区介绍二、Linux硬盘说明三、查看所有设备挂载情况四、挂载的经典案例1、虚拟机添加硬盘2、分区3、格式化4、挂载5、自动挂载五、磁盘使用情况查询1、基本语法:`df -h`2、查询指定目录的磁盘占用情况六、磁盘情况——工作使用指令1、统计/opt文件夹下文件的个数2、统计/opt文件夹下目录的个数3、统计/opt文件夹下文件的个数,包括子文件夹里的4、统计/opt文件夹下目录的个数,包括子文件夹里的5、以树状显示/opt目录结构一、Linux分区介绍Linux
2022-05-18 15:04:23
460
原创 Linux——权限管理之权限介绍、权限修改、文件/目录所有者和所在组的修改
权限管理一、权限的基本介绍1、0-9位的说明2、其它位说明(以第一行为例)二、rwx权限详解1、rwx作用到文件2、rwx作用到目录三、修改权限1、通过+、-、=变更权限2、通过数字变更权限四、修改文件/目录所有者五、修改文件/目录所在组一、权限的基本介绍使用ls -l将显示下述内容:1、0-9位的说明第0位:确定文件类型(d, -, l, c, b)l是链接,相当于windows的快捷方式d是目录,相当于windows的文件夹c是字符设备文件,鼠标,键盘b是块设备,比如硬盘-是普通文
2022-05-07 19:11:51
908
原创 Linux——组管理之文件/目录所有者、所在组、其它组的查看、创建和修改
组管理一、Linux组介绍二、文件/目录的所有者三、组的创建四、文件/目录的所在组五、其它组六、改变用户所在组一、Linux组介绍在Linux中每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有所有者、所在组、其它组的概念。二、文件/目录的所有者1、文件/目录的所有者一般是文件的创建者,谁创建了该文件,就自然的成为该文件的所有者2、查看文件的所有者指令:ls -ahl3、修改文件的所有者指令:chown 用户名 文件名三、组的创建指令:groupadd 组名四、文件/
2022-05-07 17:46:25
6582
原创 Linux——常用指令之文件目录类、时间日期类、搜索查找类、压缩和解压缩类
Linux常用指令一、文件目录类指令二、时间日期类指令三、搜索查找类指令四、压缩和解压类指令一、文件目录类指令pwd:显示当前工作目录的绝对路径ls [选项] [目录或文件]:显示文件常见选项:-a,显示当前目录所有的文件和目录,包括隐藏的;-l,以列表的方式显示信息;-h,以人可理解的方式输出,比如文件大小按照M输出cd [参数] :切换到指定目录cd ~ 或 cd :回到自己的家目录cd … :回到当前目录的上一级目录mkdir [选项] 要创建的目录:创建目录常见选项:-p,
2022-05-03 15:48:40
644
原创 Linux——指定运行级别、找回root密码、帮助指令
目录一、指定运行级别二、找回root密码三、帮助指令一、指定运行级别1、运行级别0:关机1:单用户【找回丢失密码】2:多用户状态没有网络服务3:多用户状态有网络服务4:系统未使用保留给用户5:图形界面6:系统重启2、常用运行级别是3和5,也可以指定默认运行级别3、转换运行级别命令:init 运行级别,例如:init 34、指定默认运行级别:3级别:systemctl set-default multi-user.target5级别:systemctl set-default
2022-05-02 20:44:48
672
原创 Linux——用户管理之添加、删除、切换、查询用户,修改密码,用户组,用户和组相关文件
用户管理一、添加用户二、指定/修改密码三、删除用户四、查询用户信息指令五、切换用户六、查看当前用户/登录用户七、用户组八、用户和组相关文件一、添加用户useradd 用户名:自动创建和用户同名的家目录useradd -d 指定目录 新的用户名:给新创建的用户指定家目录pwd:显示当前用户所在的目录二、指定/修改密码passwd 用户名三、删除用户userdel 用户名:删除用户,但是保留家目录userdel -r 用户名:删除用户以及用户主目录一般情况下,建议保留家目录四、
2022-05-02 15:35:56
341
原创 Linux——开机、重启、用户登录和注销
目录一、关机&重启命令二、用户登录和注销一、关机&重启命令shutdown -h now:立即关机shutdown -h 1:一分钟后关机shutdown -r now:现在重启halt:关机reboot:现在重启sync:把内存数据同步到磁盘不管是重启还是关闭,首先要运行sync命令,把内存中的数据写道磁盘中,目前shutdowm/reboot/halt等命令均已在关机前进行了sync,但是还是建议在关机或者重启前使用sync。二、用户登录和注销su - 用户名:
2022-05-01 19:17:45
299
原创 Linux——vi和vim的常用模式、模式切换、快捷键
目录一、vi和vim概述二、vi和vim常用的三种模式三、vim各种模式的切换四、vim快捷键一、vi和vim概述1、Linux系统会内置vi文本编辑器2、vim具有程序编辑的能力,可以看作是vi的增强版本,可以主动的以文字颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富。二、vi和vim常用的三种模式正常模式以vim打开一个档案就直接进入了一般模式,也就是默认的模式。在这个模式下,可以使用上下左右按键来移动光标,可以删除字符或删除整行,可以复制、粘贴文件数
2022-05-01 16:48:36
763
原创 Linux——目录结构、远程登录Xshell、远程上传下载Xftp
目录一、目录结构二、远程登录到Linux服务器——Xshell三、远程上传下载文件+Xftp一、目录结构1、Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层式根目录“/”,然后在此目录下再创建其他的目录。2、在Linux世界中,一切皆文件3、具体的目录结构/bin (/usr/bin、/usr/local/bin):是Binary的缩写,存放着最经常使用的命令/sbin(/usr/sbin、/usr/local/sbin):s就是Super User的意思,存放的是系统管理员
2022-05-01 16:09:20
997
原创 Linux——虚拟机克隆、虚拟机快照、虚拟机迁移和删除、安装vmtools、设置共享文件夹
目录一、虚拟机克隆二、虚拟机快照三、虚拟机迁移和删除四、安装vmtools五、设置共享文件夹一、虚拟机克隆虚拟机克隆有两种方式:直接拷贝一份安装好的虚拟机文件直接拷贝安装好的虚拟机文件至所需位置即可使用vmware的克隆操作,注意克隆时需要先关闭Linux系统在虚拟机名称上右键 -> 管理 -> 克隆二、虚拟机快照虚拟机提供了一个快照管理功能,用于将虚拟机系统回到之前某个状态拍摄快照:在虚拟机名称上右键 ->快照 -> 拍摄快照恢复快照:在虚拟机名称上右键
2022-05-01 14:02:16
2908
原创 Linux——网络连接的三种模式:桥接模式、NAT模式、主机模式
网络连接的三种模式一、桥接模式二、NAT模式三、主机模式一、桥接模式虚拟系统可以和外部系统通讯,但是容易造成IP冲突二、NAT模式也成为网络地址转换模式,虚拟系统可以和外部系统通讯,不造成IP冲突三、主机模式独立的系统...
2022-04-30 19:10:41
819
原创 Linux——VMWare、CentOS下载、安装、配置
VMWare、CentOS下载、安装、配置一、VMWare下载、安装二、CentOS下载三、新建虚拟机四、开启虚拟机并配置一、VMWare下载、安装下载地址:VMWare下载地址安装一直默认即可二、CentOS下载下载地址:CentOS7.6:http://mirrors.163.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.isoCentOS8.1:https://mirrors.aliyun.com/centos/8.1.
2022-04-30 18:08:52
1238
原创 Java——反射之概述、获取Class类对象、获取构造函数、获取成员变量、获取成员方法、越过泛型检查、运行配置文件指定内容
Java——反射一、反射概述二、获取Class类的对象三、反射获取构造方法四、反射获取成员变量五、反射获取成员方法六、反射练习之越过泛型检查七、反射练习之运行配置文件指定内容一、反射概述Java反射机制:指在运行时去获取一个类的变量和方法信息,然后通过获取到的信息来创建对象、调用方法的一种机制。由于这种动态性,可以极大的增强程序的灵活性,程序不用在编译器就完成确定,在运行期仍然可以扩展二、获取Class类的对象想要通过反射使用一个类,首先需要获取到该类的字节码文件对象,也就是类型为Class的对象
2022-04-28 16:10:13
1498
原创 Java——类加载、类加载器
Java——类加载、类加载器一、类加载1、类的加载2、类的连接3、类的初始化4、类的初始化步骤5、类的初始化时机二、类加载器1、类加载器的作用2、JVM的类加载机制3、Java运行时具有的内置类加载器4、ClassLoader一、类加载当程序要使用某个类时,如果该类还未加载到内存中,则系统会通过类的加载、类的连接、类的初始化三个步骤来对类进行初始化。如果不出现意外情况,JVM将会连续完成这三个步骤,所以有时也把这三个步骤统称为类加载或者类初始化1、类的加载类的加载就是将class文件读入内存,并为
2022-04-27 17:00:56
186
原创 Java——Stream流的生成方式、中间操作方法、终结操作方法、收集操作
Java——Stream流的生成方式、中间操作方法、终结操作方法、收集操作一、体验Stream流二、Stream流的使用三、Stream流的常见生成方式四、Stream流的常见中间操作方法五、Stream流中常见终结操作方法六、Stream流的练习七、Stream流的收集操作一、体验Stream流创建一个集合,存储多个字符串元素把集合中所有以“张”开头的元素存储到一个新集合把“张”开题的集合中的长度为3的元素存储到一个新集合遍历上一步得到的集合传统方式代码:import java.util
2022-04-27 16:04:46
940
原创 Java——函数式接口、Supplier接口、Consumer接口、Predicate接口、Function接口
Java——函数式接口、Supplier接口、Consumer接口、Predicate接口、Function接口一、函数式接口概述二、函数式接口作为方法的参数三、函数式接口作为方法的返回值四、常用的函数式接口五、Supplier接口六、Consumer接口七、Predicate接口八、Function接口一、函数式接口概述函数式接口:有且仅有一个抽象方法的接口函数式接口是Lambda表达式的前提用@FunctionalInterface进行注解@FunctionalInterfacepubl
2022-04-26 19:22:01
1359
原创 Java——方法引用之引用类方法、引用对象的实例方法、引用类的实例方法、引用构造器
Java——方法引用之引用类方法、引用对象的实例方法、引用类的实例方法、引用构造器一、方法引用符二、Lambda表达式和方法引用代码分析三、Lambda表达式支持的方法引用四、引用类方法五、引用对象的实例方法六、引用类的实例方法七、引用构造器一、方法引用符:: 该符号是引用运算符,它所在的表达式被称为方法引用二、Lambda表达式和方法引用代码分析1、Lambda表达式usePrintable(s -> System.out.println(s));拿到参数s之后,通过Lambda表达式
2022-04-26 14:05:28
2398
原创 Java——接口组成更新概述之接口组成更新概述、接口中默认方法、接口中静态方法、接口中私有方法
Java——接口组成更新概述之接口组成更新概述、接口中默认方法、接口中静态方法、接口中私有方法一、接口组成更新概述二、接口中默认方法三、接口中静态方法四、接口中私有方法一、接口组成更新概述接口的组成:变量 public static final抽象方法 public abstract默认方法(Java 8)静态方法(Java 8)私有方法(Java 9)二、接口中默认方法1、接口方法可以用于实现接口升级2、接口中默认方法的定义格式public default 返回值类型 方法名(参
2022-04-25 21:18:03
476
原创 Java——Lambda表达式
Java——Lambda表达式一、Lambda表达式格式二、Lambda表达式的使用前提三、Lambda表达式练习1、抽象方法无参无返回值2、抽象方法带参无返回值3、抽象方法带参带返回值四、Lambda表达式的省略模式五、Lambda表达式的注意事项六、Lambda表达式和匿名内部类的区别一、Lambda表达式格式(形式参数) -> {代码块}二、Lambda表达式的使用前提有一个接口接口中有且仅有一个抽象方法三、Lambda表达式练习1、抽象方法无参无返回值① 要求定义一个接
2022-04-25 20:31:05
632
原创 Java——TCP通信程序练习
Java——TCP通信程序练习一、客户端接收反馈,服务器给出反馈二、客户端数据来自键盘输入三、服务器数据写入文本文件四、客户端数据来自文本文件五、上传文件服务器给出反馈六、多线程实现文件上传一、客户端接收反馈,服务器给出反馈1、需求客户端:发送数据,接收服务器反馈服务器:接收数据,给出反馈2、代码实现客户端import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import j
2022-04-25 12:10:55
405
1
原创 Java——网络编程之TCP通信原理、TCP发送数据、TCP接收数据
网络编程之TCP通信原理、TCP发送数据、TCP接收数据一、TCP通信原理二、TCP发送数据1、TCP发送数据的步骤2、TCP发送数据的示例三、TCP接收数据1、TCP接收数据的步骤2、TCP接收数据的示例一、TCP通信原理TCP通信协议是一种可靠的网络协议,在通信的两端各建立一个Socket对象,从而在通信的两端形成网络虚拟链路,一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信Java对基于TCP协议的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket
2022-04-25 09:32:14
1443
原创 Java——网络编程之UDP通信程序练习
Java——网络编程之UDP通信程序练习1、需求分析2、代码实现1、需求分析UDP发送数据:数据来自于键盘录入,直到输入的数据是886,发送数据结束UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收2、代码实现发送端import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.DatagramPacket;impo
2022-04-25 09:08:19
192
原创 Java——网络编程之UDP通信程序原理、UDP发送数据、UDP接收数据
Java——网络编程之UDP通信程序原理、UDP发送数据、UDP接收数据一、UDP通信程序原理二、UDP发送数据三、UDP接收数据一、UDP通信程序原理UDP协议是一种不可靠的网络协议,它在通信的两端各建立一个Socket对象,但是这两个Socket只是发送、接收数据的对象。因此,对于基于UDP协议的通信双方而言,没有所谓的客户端和服务器的概念Java提供了DatagramSocket类作为基于UDP协议的Socket二、UDP发送数据UDP发送数据的步骤:创建发送端的Socket对象(D
2022-04-24 18:40:08
703
原创 Java——网络编程之三要素:IP地址、端口、协议
Java——网络编程之三要素:IP地址、端口、协议一、计算机网络二、网络编程三、网络编程三要素四、IP地址五、InetAddress六、端口七、协议一、计算机网络计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。二、网络编程在网络通信协议下,实现网络互连的不同计算机上运行的程序间可以进行数据交换三、网络编程三要素IP地址要想让网络中的计算机能够互相通信,必须
2022-04-24 16:23:43
1518
1
原创 Java——线程之生产者消费者
Java——线程之生产者消费者一、生产者消费者模式概述二、生产者消费者案例一、生产者消费者模式概述生产者消费者模式是一个经典的多线程协作的模式。生产者消费者问题主要包含两类线程:生产者线程:生产数据消费者线程:消费数据为了解耦生产者和消费者的关系,通常会采用共享的数据区域,就像是一个仓库:生产者生成数据后直接放置在共享数据区中,并不需要关心消费者的行为消费者只需要从共享数据区中去获取数据,并不需要关心生产者的行为为了体现生产和消费过程中的等待和唤醒,Java提供了几个方法,这几个方
2022-04-24 14:35:23
1535
原创 Java——线程之线程同步:同步代码块、同步方法、同步静态方法、线程安全类、Lock锁
Java——线程之线程同步一、卖票案例二、卖票案例的思考三、卖票案例数据安全问题的解决四、同步代码块五、同步方法六、同步静态方法七、线程安全的类八、Lock锁一、卖票案例1、需求某电影院正在上映国产大片,共100张票,有3个窗口买票,设计一个程序模拟该电影院卖票2、思路① 定义一个SellTicket实现Runnable接口,里边有一个成员变量:private int tickets = 100;②在SellTicket类中重写run()方法实现卖票,步骤如下:判断票数大于0,就卖票,并告知
2022-04-24 11:56:10
650
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人