自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 04-Charles中的Map Remote和Map Local介绍

Charles提供了Map Remote和Map Local两个功能。

2024-07-27 15:19:33 223

原创 03-Charles实战

这是后台响应回来的错误信息,说明问题一是后台的原因;但是后台只响应了一条信息,而前端页面却显示两条错误信息,说明前端页面处理异常的时候逻辑有问题;所以说前后端都有问题。 使用charles抓取https请求报文的时候,报文会出现乱码,解决办法是需要安装SSL证书。

2024-07-15 01:24:43 517

原创 02-Charles的安装与配置

1、在Chrome浏览器中输入:chrome://settings/2、在搜索框中输入“代理”3、点击“打开您计算机的代理设置“4、在手动设置代理中开启代理5、在地址输入框中输入Charles的IP地址以及端口6、点击“保存”,关闭页面。

2024-07-15 00:08:32 295

原创 01-Charles简介

Charles中文名叫青花瓷,它是一款基于HTTP协议的代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和响应达到分析抓包的目的。特点:跨平台。

2024-07-14 22:26:03 316

原创 01-接口测试概述

接口其实就是服务器端定义的一堆函数或方法集合,接口调用其实就是在调用这堆函数或方法。由于接口是在两台电脑之间远程去调用这些方法,所以不能直接通过函数名来进行调用。不同电脑之间如果要进行通信,必须通过特定的网络协议来实现,所以接口调用必须借助于网络协议来进行调用,所以学习接口测试必须先熟悉网络协议。接口测试是测试系统组件间接口的一种测试,主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

2024-07-14 20:44:16 626

原创 01-Fiddler的下载、安装和配置

Fiddler相当于是一个“中间人”,客户端发送请求时,会先将请求发给Fiddler,Fiddler再把请求转发给服务端;当服务端返回响应数据时,也会先返回给Fiddler,最后Fiddler再将响应结果返回给客户端。1)Fiddler总是提示“The system proxy was changed,click to reenable fiddler capture”。因此,Fiddler对于客户端和服务端之间交互的数据细节,都是非常清楚的,进而可以帮助我们完成相应的抓包工作。下载之后,傻瓜式安装即可。

2024-07-14 19:35:10 412

原创 07-appium常用操作

TouchAction可以实现一些针对手势的操作,比如滑动、拖动、长按等,我们可以将这些基本手势组合成一个相对复杂的手势,比如我们解锁手机或者一些应用软件都有手势解锁的这种方式。drag_and_drop方法是也是滑动页面,从一个元素滑动到另一个元素,第二个元素代替第一个元素原本屏幕上的位置。scroll方法是滑动页面,不过不是滑动滚动条,而是获取两个元素,然后从一个元素滚动到另一个元素。这里通过代码,将设置页从第一个坐标点(660,1483)滑动到第二个坐标点(660,533)。

2024-06-20 20:40:15 969

原创 06-简单案例

下面列表中有四个字典,每个字典中的num1代表第一个操作数,num2代表第二个操作数,op代表操作符。现要求用代码读取这个列表中的字典,在计算机apk中自动化完成对应的运算操作,并通过读取计算器的结果框中显示的数字,打印运算结果。

2024-06-19 22:10:05 230

原创 05-对混合app应用中的元素进行定位

现在大部分app都是混合式的native+webview,对于native上的元素通过uiautomatorviewer很容易定位到,而对于webview上的元素就无法识别了。WebView直译是网页视图,是一个基于webkit内核的,用于显示网页的控件,具备渲染Web页面的功能。Android的Webview在低版本和高版本采用了不同的webkit版本内核,4.4后直接使用了Chrome浏览器的内核。

2024-06-19 21:20:56 851

原创 04-对原生app应用中的元素进行定位

只有在旧版本的appium中才可通过上述方式打开Appium Inspector窗口,如果使用的是最新版本的appium,就需要单独安装Appium Inspector了。uiautomatorviewer是Android-SDK自带的一个元素定位工具,非常简单好用,可以使用该工具查看app应用中的元素属性,帮助我们在代码中进行元素定位。Appium Inspector是appium自带的一个元素定位工具,这部分将介绍Appium Inspector是如何定位元素的。

2024-06-15 19:20:59 1240

原创 03-appium环境配置和启动参数设置

Appium是一个开源、跨平台的自动化测试框架,支持Android、IOS等平台,同时也支持多语言,比如:Java、Python等。Appiumu通过扩展Selenium的Webdriver JSON协议,使得IOS和Android的自动化测试代码可以共用,通过调⽤UIAutomator的命令,实现Android应用的自动化测试。

2024-06-15 15:55:21 1063

原创 02-adb的工作原理和常见命令

ADB 是 Android Debug Bridge 的简称,是 Android 平台的调试工具。通过 adb 命令可以去获取安卓设备上的一些信息,也可以直接操作管理 Android 模拟器或者真实的 Android 设备。ADB 采用客户端-服务端程序架构,简称 C-S 架构。1)客户端(adb client):运行在PC上,用来发送 adb 命令。2)服务端(adb server):运行在PC上的一个守护进程,用来管理 adb client 端和 Android 设备上的 adbd 进程之间的通信。

2024-06-14 19:16:46 879

原创 01-Java和Android环境配置

appium是做app自动化测试最火的一个框架,它的主要优势是支持android和ios,同时也支持Java和Python脚本语言。而学习appium最大的难处在于环境的安装配置,本文主要介绍Java和Android环境配置,在后续文章中将会介绍appium的安装和具体使用。

2024-06-12 20:33:31 503

原创 34-发生异常后进行截图(screenshot)

测试用例在执行过程中是无人看守的,用例运行报错的时候,我们希望能对当前屏幕截图,留下证据。而在写测试用例的时候,最后一步是断言,可以把截图的动作放在断言之后,那么如何在断言失败后执行截图操作呢?

2024-06-11 13:42:36 88

原创 33-unittest数据驱动(ddt)

所谓数据驱动,是指利用不同的测试数据来测试相同的场景。为了提高代码的重用性,增加代码效率而采用一种代码编写的方法,叫数据驱动,也就是参数化。达到测试数据和测试业务相分离的效果。比如登录这个功能,操作过程都是一样的。如果在测试用例中重复去写操作过程会增加代码量,对于这种场景,可以采用数据驱动设计模式,一组数据对应一个测试用例,用例自动加载生成。

2024-06-10 20:44:25 241

原创 32-读取Excel数据(xlrd)

本篇介绍如何使在python中读取excel数据。

2024-06-10 19:31:42 363

原创 31-捕获异常(NoSuchElementException)

在定位元素的时候,经常会遇到各种异常,遇到异常又该如何处理呢?本篇通过学习selenium的exceptions模块,了解异常发生的原因。

2024-06-10 16:17:21 243

原创 30-unittest生成测试报告(HTMLTestRunner插件)

批量执行完测试用例后,为了更好的展示测试报告,最好是生成HTML格式的。本文使用第三方HTMLTestRunner插件生成测试报告。

2024-06-08 21:39:48 1061

原创 29-unittest批量执行案例

在写测试用例的时候,单个脚本的用例很好执行,那么多个脚本的时候,如何批量执行呢?这时候就可以通过unittet中的TestLoader来加载用例,加载完用例后,使用unittest中的TestRunner去一次执行多个脚本的用例。

2024-06-08 21:03:05 382

原创 28-unittest批量执行(discover)

unittest框架提供了创建测试用例、测试套件以及批量执行的解决方案。利用单元测试框架创建测试类,可以把每个测试方法看成是一个最小的单元, 由测试容器组装打包起来,然后可以统一执行,最后输出测试报告。

2024-06-08 16:52:31 1151

原创 27-unittest之断言(assert)

1)分析assertEqual断言方法# 如果两个对象不相等,就返回失败,相当于return: first == second。2)该断言方法中除了用于比较的两个参数first和second外,还有第三个参数msg=None,这个msg参数就是在断言失败后,可以自定义报错信息。b = 'lisi'self.assertEqual(a, b, "失败原因:{}!

2024-06-06 18:25:57 527

原创 26-unittest之装饰器(@classmethod)

unittest中的setUp可以在每个测试方法运行前执行,有效的减少了代码量。但有个弊端,比如打开浏览器操作,执行每个测试方法前都要重新打开一次,这样就会浪费很多时间。是否可以只打开一次浏览器,执行完所有的测试方法后再关闭浏览器呢?这里就需要用到装饰器(@classmethod)来解决了。

2024-06-06 18:25:42 398

原创 25-unittest执行顺序

")print("执行测试用例01")print("执行测试用例03")print("执行测试用例02")print("add方法")

2024-06-06 18:25:18 453

原创 24-unittest简介

unittest是Python中常用的单元测试框架,与Java中的Junit单元测试框架类似。

2024-06-06 18:24:56 656

原创 23-通过JS代码处理click失效问题

有时候按钮元素已经定位到了,运行也没报错,点击后页面没有反应。这种问题是比较头疼的,因为没有任何报错,只是click事件失效了。本篇用两种方法解决这种诡异的点击事件失效问题。

2024-06-04 14:26:19 571

原创 22-验证码的处理

验证码这种问题是比较头疼的,对于验证码的处理,不要去想破解方法,这个验证码本来就是为了防止别人自动化登录的。本文以网站为例,介绍通过添加登录cookie的方式来绕过验证码,本方法只适用于需要记住登录状态的网站。

2024-06-03 20:15:40 742

原创 21-cookie相关操作

cookie相关操作在Web自动化测试中偶尔也会用到,比如在登录时需要输入验证码,可以通过添加登录cookie,绕过验证码的方式进行登录。

2024-06-03 16:32:00 485

原创 20-获取页面上的各种属性值

使用get_attribute("属性名")方法可以获取元素对象的其它属性值,这里的参数可以是class、name等任意属性。比如:获取百度输入框的class属性。selenium的page_source方法可以获取到页面源码。比如在百度输入框输入了内容,这些内容也是可以获取到的。

2024-05-30 17:30:22 172

原创 19-通过JS代码处理多窗口

在打开页面上的链接时,经常会弹出一个新窗口,这样在多个窗口之间来回切换比较复杂,有没有办法让新打开的链接还在原窗口显示呢?

2024-05-30 16:32:50 401

原创 18-通过JS代码处理内嵌div滚动条

在JS代码中,使用class属性定位时,返回的是一个list列表对象,这里取列表中的第一个元素对象就可以了。注意:element和elements的区别。首先通过id定位到内嵌div元素对象,然后使用scrollTo方法来控制滚动条滚动。首先通过id定位到内嵌div元素对象,然后使用scrollTo方法来控制滚动条滚动。

2024-05-30 15:44:11 453

原创 17-通过JS代码处理日历控件(去掉readonly属性)

日历控件是web页面上很常见的一个功能,有些输入框是可以直接输入日期的,有些是不能的。以智行火车票网站为例,详细讲解如何解决日历控件有readonly属性的问题。基本思路:先通过JS代码去掉readonly属性,然后直接输入日期文本内容。

2024-05-30 15:01:40 431

原创 16-富文本编辑框

富文本编辑框是web页面上很常见的一个功能,本篇以CSDN的编辑器为例,记录如何定位富文本,并输入文本内容。

2024-05-30 14:16:11 508

原创 15-通过JS代码处理窗口滚动条

为什么要了解JavaScript?因为有些特殊的操作是selenium+python无法直接完成的,而JavaScript刚好是这方面的强项,所以算是一个很好的补充。。

2024-05-29 19:03:47 470 1

原创 14-alert\confirm\prompt\自定义弹窗

由于alert弹窗不美观,现在大多数网站都会使用自定义弹窗,使用selenium自带的方法无法处理,此时就需要通过JS代码来处理了。。上图中的这种蓝色弹窗就是现在主流的表现形式,处理这种弹窗可以利用JS代码进行处理,这种元素对象有一个display属性,可以设置元素是否显示。

2024-05-29 17:05:11 628

原创 13-文件上传(send_keys)

文件上传是web页面上很常见的一个功能,但webdriver并未提供对应方法。

2024-05-29 14:12:01 351

原创 12-iframe的切换

iframe标记又叫浮动帧标记,可以用它将一个html文档嵌入到另一个html中显示。它和frame标记的最大区别是:在网页中嵌入的<iframe></iframe>所包含的内容与整个页面是一个整体,而<frame>< /frame>所包含的内容是一个独立的个体,是可以独立显示的。

2024-05-28 20:12:45 379

原创 11-多窗口、句柄(handle)

页面中的某些链接打开后,会重新打开一个窗口,想在新页面上进行操作,需要先切换窗口。用句柄表示窗口的唯一标识,所以只需要切换句柄,就能在多个页面上灵活操作了。

2024-05-28 17:55:47 380

原创 10-select下拉框

然后通过下拉框中选项的索引来定位对应选项(索引从0开始),比如选择第三个选项:select_by_index(2)。比如第三个选项对应的文本内容是“每页显示50条”:select_by_visible_text("每页显示50条")。Select模块里除了根据索引进行定位外,还可以根据选项的value值来进行定位。比如第二个选项对应的value值是"20":select_by_value("20")。通过导入Select模块,可以直接根据索引或属性对下拉框中的选项进行定位。

2024-05-28 14:56:57 177

原创 09-单选框(radio)和复选框(checkbox)

全部勾选,可以先定位到所有的复选框,然后通过for循环一个个执行click()操作。通过is_selected()方法可以判断选项框是否为选中状态,该方法返回结果为bool类型,未选中时该方法返回False,选中时该方法返回True。有时候选项框本身就是已选中状态,如果再点击一下就反选了,这不是期望的结果,所以点击前需要先判断选项框是否已选中。勾选单个复选框,比如只勾选selenium,可以根据id定位到元素对象后调用click()点击即可。根据id进行定位,先单选“男”,3秒后切换为单选“女”。

2024-05-28 14:26:23 331

原创 08-登录案例

虽然上面的代码能实现登录和退出,但整个代码没有可读性。如果想换个账号登录,还得找到设置登录账号和密码的位置进行修改,比较麻烦。我们可以把登录和退出写出两个函数,把登录账号和密码参数化。打开github登录页:https://github.com/login,输入用户名、密码后,点击登录。登录完成之后,需要检查是否登录成功,这里就需要有个检查点,我这边选择右上角的账户名是不是刚才登录的账号。测试完之后,退出登录,关闭浏览器。

2024-05-27 20:38:49 243

接口测试-测试用例模板

接口测试-测试用例模板

2024-07-14

测试开发 - 测试报告模板

测试开发 - 测试报告模板

2024-03-02

空空如也

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

TA关注的人

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