随笔分类 -  自动化--Unittest/Pytest

摘要:在自动化测试中,如果文件上传元素是input类型的,常规的操作步骤为, 1、定位到文件上传的元素 file_element = driver.find_element_by_name('myfile') 2、send_keys('文件路径') file_element.send_keys(r'd:\ 阅读全文
posted @ 2020-03-31 19:35 suanmiao 阅读(1791) 评论(0) 推荐(0)
摘要:自动化测试过程中无时无刻不涉及鼠标和键盘操作,除了元素定位以外,其他都是由键盘和鼠标操作来完成的。比如一个简单的搜索动作,首先通过键盘向搜索框键入内容(send_keys),然后通过鼠标点击搜索按钮(click)完成搜索。 在selenium中,所有的键盘鼠标动作都来自于一个类ActionChain 阅读全文
posted @ 2020-03-21 21:45 suanmiao 阅读(890) 评论(0) 推荐(0)
摘要:窗口切换 在使用元素定位的过程中,我们只能定位到同一个页面下的元素,如果有打开新的窗口,需要定位新窗口的内容,直接使用定位是找不到元素的。此时就要进行窗口切换,把当前定位的窗口换到新窗口上,那就涉及到一个新的概念:句柄,句柄是一个浏览器窗口的特性,是一串字符串,每个窗口的句柄都是不一样的,所以我们可 阅读全文
posted @ 2020-03-19 21:24 suanmiao 阅读(1285) 评论(0) 推荐(0)
摘要:通常,我们可以通过八大元素定位方式定位到所需的元素,不过有些时候,元素的属性和状态并不满足自动化的需求,因此,为了解决这个问题,可以采用获取和修改元素属性等操作。这里我们以携程网举例, 首先打开携程官网首页, driver.get('https://www.ctrip.com/') 定位导航栏中的【 阅读全文
posted @ 2020-03-17 23:12 suanmiao 阅读(605) 评论(0) 推荐(0)
摘要:在UI自动化实施过程中,存在一些元素定位和鼠标键盘操作无法解决的问题,比如滑动浏览器滚动条,某些元素出现在可见范围内等等。 selenium中有几种直接操作浏览器动作,刷新页面操作如下: # 刷新页面 driver.refresh() 常用的还有, back():浏览器访问页面回退 forward( 阅读全文
posted @ 2020-03-16 22:09 suanmiao 阅读(2338) 评论(0) 推荐(0)
摘要:在学习po模式之前,先来认识一下什么是po模式,它的英文全称是page-object模式,即页面对象模式,顾名思义,就是把一个页面当作一个对象来对待。熟悉Python基础的应该都知道面向对象,实际上这种模式与面向对象的思想如出一辙,既然差不多,那么我们就来看看如何去使用这个模式,以简书登录页面为例, 阅读全文
posted @ 2020-03-13 21:54 suanmiao 阅读(786) 评论(0) 推荐(0)
摘要:等待是UI自动化测试过程中最重要的一个知识点,很多时候,因为网络、服务器等各种因素的影响,页面中的内容加载缓慢,而我们的自动化脚本代码执行速度时很快的,此时就有可能出现去定位元素时,该元素还没有被加载出来,以至于报NoSuchElement、TimeOut等错误。 所以,学会使用等待,可以帮助我们解 阅读全文
posted @ 2020-03-12 22:36 suanmiao 阅读(482) 评论(0) 推荐(0)
摘要:toast弹窗在自动化元素定位中属于非常特殊的场景。 因为它是一个临时弹窗,很快就会消失掉,极难使用uiautomatorviewer工具截图到它。 如果是在浏览器中,我们还能通过暂停source资源进行定位;但是在Android环境中,工具定位无法实现,并且我们不知道它属于什么类型的元素,有什么属 阅读全文
posted @ 2020-03-10 20:29 suanmiao 阅读(1018) 评论(0) 推荐(0)
摘要:什么是混合应用?在手机模拟器或真机中,如果有存在非Android原生控件的内容,比如网页,这种应用即可被称为混合应用。 使用uiautomatorviewer定位APP元素时,只有Android原生控件元素能够被定位到。 如果是非原生的,那么它展示出的就是一个整体,则无法对内部元素进行定位,而web 阅读全文
posted @ 2020-03-09 22:01 suanmiao 阅读(242) 评论(0) 推荐(0)
摘要:其实屏幕的放大和缩小与swipe滑动屏幕类似,不过唯一的区别在于swipe是单指操作,而放大和缩小属于多指操作。 这里我们以放大操作为例; 由于它是多指操作,首先定义一个多动作对象: multi_action = MultiAction(driver) 然后分别定义两个touch对象,代表两个手指: 阅读全文
posted @ 2020-03-08 14:23 suanmiao 阅读(992) 评论(0) 推荐(0)
摘要:在做APP自动化的过程中,常常会涉及到不同方式的登录验证,九宫格解锁就是其中比较常见的一种,今天就来使用自动化来实现九宫格解锁功能。 通过uiautomatorviewer工具截图可以发现,整个九宫格其实是一个元素,那如何在九宫格里准确的绘制图案呢?常用的元素定位方式肯定无法实现,经过分析,这里可不 阅读全文
posted @ 2020-03-07 15:22 suanmiao 阅读(709) 评论(0) 推荐(0)
摘要:屏幕页面滑动在APP自动化测试中属于一个比较常见也比较特殊的操作。 通过查看swipe()方法的源码可以知道它一共有5个参数,分别为: start_x:起点横坐标 start_y:起点纵坐标 end_x:终点横坐标 end_y:终点纵坐标 duration:滑动时间,单位毫秒 并且可以发现,它的本质 阅读全文
posted @ 2020-03-06 20:39 suanmiao 阅读(1219) 评论(0) 推荐(0)
摘要:首先启动我们已经安装好的模拟器,将需要测试的.apk安装包直接拖入模拟器,它会自动安装;然后启动Appium桌面应用程序,它的默认端口是4723,而appium.webdriver驱动中默认端口是4444,我们可以做一些修改,如下: 然后点击【Start Server v1.13.0】,出现类似下面 阅读全文
posted @ 2020-03-04 20:07 suanmiao 阅读(1397) 评论(0) 推荐(0)
摘要:在项目研发的时候,一般开发会先提供接口文档,虽然很多接口并没有被实现,但测试可以提前写好Mock,等接口实现时可以快速完成该接口的自动话代码编写,进而提高接口自动化测试效率,那么使用Python如何实现接口Mock呢? 首先我们要知道Mock的原理:模拟后端接口返回数据。 所以,在进行Mock时,未 阅读全文
posted @ 2020-03-01 10:59 suanmiao 阅读(490) 评论(0) 推荐(0)
摘要:DDT(data driver test)数据驱动测试。 数据驱动将数据和代码分离,能够帮助我们高效的管理测试数据,在unittest框架中如何使用数据驱动呢?需要用到第三方模块ddt。 假设有一个现成的接口is_number,它的功能是判断传入的参数是否为正数,首先设计测试用例,然后根据测试用例, 阅读全文
posted @ 2020-02-27 22:52 suanmiao 阅读(760) 评论(0) 推荐(0)
摘要:配置文件在项目中常用于信息管理,例如数据库信息、服务器信息等,也可以用于环境切换。 配置文件主要有.ini和.conf两种类型。 这里我们使用Python的第三方库模块configparser实现.ini配置文件管理。 首先,准备好配置文件,文件名为conf.ini,文件内容如下: [mysql] 阅读全文
posted @ 2020-02-25 22:18 suanmiao 阅读(158) 评论(0) 推荐(0)
摘要:在实现日志轮转之前,我们首先要明白什么是日志轮转?在大多数后台服务运行时,会生成大量的日志记录,而这些记录并不是所有都需要永久保存,那么我们就可以采用日志轮转的方式,使用新的日志覆盖掉最旧的日志,并采用多个文件循环存储,方便更加快捷的定位到我们所需的内容。 不会实现基本的日志记录?可参考《loggi 阅读全文
posted @ 2020-02-24 21:36 suanmiao 阅读(355) 评论(0) 推荐(0)
摘要:在任何程序中,日志记录功能必不可少,它有可以帮助我们追溯程序执行历史提供参考依据。 今天要实现的日志记录功能,使用到了Python的内置模块logging,它包含四个日志等级,从严重程度上划分为:CRITICAL、ERROR、WARNING、INFO、DEBUG。 除此之外,我们需要知logging 阅读全文
posted @ 2020-02-23 22:43 suanmiao 阅读(234) 评论(0) 推荐(0)
摘要:如果整个自动化测试的所有文件全部存储在同一个文件夹,那么项目会变得难以管理,列表杂乱无章。 即使对项目做了分层设计,给不同类型文件做了划分,那么不同文件夹各自的路径也不好管理;在一个项目下,最好的定位应该从项目所在盘符的根路径开始,而每个文件夹的路径不建议直接写死,因为项目在环境也许不是永久固定的, 阅读全文
posted @ 2020-02-22 11:29 suanmiao 阅读(361) 评论(0) 推荐(0)
摘要:随着项目的持续迭代,新增的接口会越来越多,关联性也越强,如果这么多数据都单独存放在各自的测试用例中,那维护将会是一个巨大的工程,费时费力,为了更有效的管里数据和代码,现在的框架基本都做了数据和代码的解耦处理。 将测试数据独立存放起来管理也是最有效的解耦操作,这里就来讲讲如何通过Excel来管理测试数 阅读全文
posted @ 2020-02-20 20:03 suanmiao 阅读(667) 评论(0) 推荐(0)