自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 07-appium常用操作

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

2024-06-20 20:40:15 915

原创 06-简单案例

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

2024-06-19 22:10:05 223

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

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

2024-06-19 21:20:56 841

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

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

2024-06-15 19:20:59 1208

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

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

2024-06-15 15:55:21 979

原创 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 868

原创 01-Java和Android环境配置

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

2024-06-12 20:33:31 500

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

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

2024-06-11 13:42:36 81

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

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

2024-06-10 20:44:25 238

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

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

2024-06-10 19:31:42 358

原创 31-捕获异常(NoSuchElementException)

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

2024-06-10 16:17:21 240

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

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

2024-06-08 21:39:48 1024

原创 29-unittest批量执行案例

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

2024-06-08 21:03:05 371

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

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

2024-06-08 16:52:31 1130

原创 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 505

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

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

2024-06-06 18:25:42 391

原创 25-unittest执行顺序

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

2024-06-06 18:25:18 451

原创 24-unittest简介

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

2024-06-06 18:24:56 653

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

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

2024-06-04 14:26:19 469

原创 22-验证码的处理

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

2024-06-03 20:15:40 738

原创 21-cookie相关操作

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

2024-06-03 16:32:00 479

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

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

2024-05-30 17:30:22 166

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

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

2024-05-30 16:32:50 351

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

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

2024-05-30 15:44:11 419

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

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

2024-05-30 15:01:40 396

原创 16-富文本编辑框

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

2024-05-30 14:16:11 501

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

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

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

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

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

2024-05-29 17:05:11 605

原创 13-文件上传(send_keys)

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

2024-05-29 14:12:01 339

原创 12-iframe的切换

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

2024-05-28 20:12:45 360

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

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

2024-05-28 17:55:47 374

原创 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 172

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

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

2024-05-28 14:26:23 310

原创 08-登录案例

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

2024-05-27 20:38:49 242

原创 07-操作元素(键盘和鼠标事件)

在前面的文章中重点介绍了一些元素的定位方法,定位到元素后,就需要操作元素了。本篇总结了web页面常用的一些操作元素方法,可以统称为行为事件。

2024-05-27 19:43:11 556

原创 06-定位一组元素find_elements

前面的几篇都是讲如何定位一个元素,有时候一个页面上有多个对象需要操作,如果一个个去定位的话,比较繁琐,这时候就可以定位一组对象。webdriver 提供了定位一组元素的方法,跟前面八种定位方式一样,只是前面是单数,这里是复数形式:find_elements。

2024-05-27 18:54:00 412

原创 05-设置等待时间

在某个页面中点击了A按钮后,有个标签的文本内容会变成"XXX",然后需要获取到这个"XXX"文本内容。设置一次后,全局有效。元素对象没有在页面出现时,最多等待指定时间;但如果在等待时间内,元素对象出现就停止等待。可针对每一个元素进行单独设置,等待条件更加灵活。

2024-05-27 17:10:30 458

原创 04-css selector定位元素

如上图所示,要定位的是input这个标签,它的父元素有属性:id=s_kw_wrap,因此可以很方便的定位到它的父元素。要是它的父元素也无法直接定位到,就依次向上找它父元素的父元素(爷爷元素),它的爷爷元素有属性:id=form,因此可以很方便的定位到它的爷爷元素。以上是css selector定位元素的语法,css selector具有强大的功能,即可根据元素任意属性进行定位,又可根据元素位置进行定位,是定位元素的最终解决办法之一。说明:根据元素的class属性进行定位,前提是该元素有class属性。

2024-04-25 21:54:37 1057

原创 03-xpath定位元素

如上图所示,要定位的是input这个标签,它的父元素有属性:id=s_kw_wrap,因此可以很方便的定位到它的父元素。要是它的父元素也无法直接定位到,就依次向上找它父元素的父元素(爷爷元素),它的爷爷元素有属性:id=form,因此可以很方便的定位到它的爷爷元素。以上是xpath定位元素的语法,xpath具有强大的功能,即可根据元素任意属性进行定位,又可根据元素位置进行定位,是定位元素的最终解决办法之一。在定位元素过程中,到底该使用id、name、class等属性进行定位,还是使用xpath进行定位呢?

2024-04-25 19:42:14 1013

原创 02-八种元素定位方法

自动化测试过程主要包含四步操作:获取元素(定位元素)、操作元素、获取返回结果、断言(返回结果与期望结果是否一致),最后自动生成测试报告。元素定位在这四个环节中是至关重要的,如果说按学习精力分配的话,元素定位占70%、操作元素占10%、获取返回结果占10%、断言占10%。如果一个页面上的元素不能被定位到,那后续的操作就无法进行了,接下来就来介绍WebDriver提供的八种元素定位方法。

2024-04-25 19:40:36 946

测试开发 - 测试报告模板

测试开发 - 测试报告模板

2024-03-02

空空如也

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

TA关注的人

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