web自动化测试
文章平均质量分 79
基于python3的web自动化测试,主要是通过selenium包来实现对浏览器的控制,并引入unittest框架来集成测试用例,并执行(还有robot framework)
许西城
软件测试
展开
-
Robotframework(4):创建变量的类型和使用
实际的测试过程中,编写脚本时,我们需要创建一些变量来暂时或者永久性的存储数据,那么在Robotframework中该怎么做呢,我们可以通过图形界面,在每一个suite中我们可以创建变量,而Robotframework提供了三种变量类型来供选择,一种单个数据 Scalar、一种是列表List、一种是字典Dictionary,下面我们来学习一下如果通过Robotframework来创建这些变量...原创 2017-08-30 18:09:56 · 15025 阅读 · 0 评论 -
Robotframework(3):使用pycharm编写和运行RF脚本
我们在使用Robotframework时,经常编写脚本的人或许会不习惯,不过没关系!我们在熟悉RF的语法后,可以使用编辑器来编写和运行。下面就通过使用最多的python编辑器pycharm来演示一下如何配置和运行RF的脚本。1.下载pycharm我们可以通过官网来下载软件:http://www.jetbrains.com/pycharm/当然,也可以通过百度云链接下载(三个版本任...原创 2017-08-24 14:35:14 · 12176 阅读 · 1 评论 -
Robotframework(2):创建RF第一条可执行的用例
上篇,我们说了如何配置基础的环境,配置好了python2、wxPython 、robotframework、robotframework-ride,这篇我们来根据已经配置好的环境来简单介绍一下RF(Robotframework)并且来学习如何创建编写一条用例,并且执行它!!!1.安装RF的selenium库对于自动化测试的话,selenium库是必不可少的,而RF也有自己的seleni...原创 2017-08-23 15:45:18 · 5197 阅读 · 0 评论 -
Robotframework(1):配置基础环境
最近对Robotframework这款基于python的框架比较感兴趣,于是想着来研究一下,下面我们来先配置一些基本环境1. 安装Python2.72. 安装wxPython2.8-win32-unicode3. 使用pip 安装robotframework4. 使用pip 安装robotframework-ride5. 运行ride.py验证安装成功1.下载基础的环...原创 2017-08-22 15:44:53 · 1297 阅读 · 0 评论 -
web自动化测试终篇(28):总结我理解的ui自动化
①需求稳定,不会频繁变更自动化测试最大的挑战就是需求的变化,而自动化脚本本身就需要修改、扩展、debug,去适应新的功能,如果投入产出比太低,那么自动化测试也失去了其价值和意义;折中的做法是选择相对稳定的模块和功能进行自动化测试,变动较大、需求变更较频繁的部分用手工测试;②多平台运行,组合遍历型、大量的重复任务测试数据、测试用例、自动化脚本的重用性和移植性较强,降低成本,提高效率和价值;...原创 2019-05-04 23:05:13 · 9388 阅读 · 4 评论 -
web自动化测试第27步:连接数据库(mysql的ssh和明文连接)
在某些场景,我们需要通过从数据库取值来进行赋值、比对断言,所以就需要连接数据库的方法,这里着重介绍一下关于如何使用python连接mysql数据库,其中包括账号密码连接mysql和ssh连接mysql,以及账号密码连接oracle数据库。一、账号密码连接mysql的步骤1.导入库python连接mysql需要导入:pymysql库我们直接导入:import pymysql.cu...原创 2019-04-24 22:20:19 · 2143 阅读 · 0 评论 -
web自动化测试第26步:邮件发送测试报告(明文、ssl、tls)
在我们运行完整个项目后,已经生成了测试报告,一般自动化会在本地或者公司服务器上运行,那如何获取自动化测试的运行结果呢,此时就需要把测试结果以邮件的形式发送到邮箱,这样就可以在测试完成的第一时间知道测试结果。所以我们需要来学习一下如果使用python第三方库来发送邮件。其实关于发送邮件的方法,复制粘贴过来,修改下参数、账号、密码后,直接使用就可以了,再把数据写到配置中参数化基本就搞定。...原创 2019-04-19 18:05:56 · 1583 阅读 · 0 评论 -
web自动化测试第25步:加入log日志
日志是一个成熟的系统里不可或缺的一部分,对于自动化测试框架来说,最大的作用大概在于可以取代print()方法,并且可以在日志文件中回溯。这里我们引入log日志类,来代替print()记录输出测试过程中的关键信息。一、日志等级在日志中有五个等级debug、info、warning、error、critical等级 等级数值 形容 debug 10 详细信息 ...原创 2019-04-04 18:41:58 · 1638 阅读 · 0 评论 -
web自动化测试第24步:使用测试报告模板(HTMLTestRunner、BeautifulReport)
在运行完测试用例后,需要用一个测试报告来作为自动化运行的一个报告成果,一般是统计用例运行的成功失败,这里就给大家引入两个测试报告模板HTMLTestRunner以及BeautifulReport,这里基于POM设计模式实现这篇文章中的代码,来进行改造以及介绍具体的使用。HTMLTestRunnerBeautifulReport一、模板的下载大家可以网上搜索这两个测试报告模板...原创 2019-04-03 22:30:53 · 4056 阅读 · 0 评论 -
web自动化测试第23步:数据分离(类变量、yaml、excel)
在ui自动化中,经常会用到数据的存储和读取,这里主要介绍一下如何处理测试中经常用到的数据。一、类变量一般习惯把元素定位地址作为类变量存储,因为这样对于调试纠错比较方便,书写调用也较简单。1.1本类中调用类变量例如:Demo类中,在类下申请一个变量name,如果这个类中的方法要引用name,需要self.name这样的格式调用。demo_class.pyclass Demo...原创 2019-03-29 18:02:49 · 2005 阅读 · 0 评论 -
web自动化测试第22步:POM设计模式的实现
关于pom设计模式(project Object model/PageObject),我的理解是一种底层、逻辑、用例的分层,在项目还没有开发出来时,就可以开始写UI自动化脚本了,在开发完成后,再进行元素定位的适配以及调试;而且也可以多人共同维护开发脚本,更方便大家合作。这一节主要来介绍一下如何从零开始搭建这几个层级。一、driver层的封装这一层主要是对于webdriver方法的封装,...原创 2019-03-28 17:36:31 · 5390 阅读 · 3 评论 -
web自动化测试第21步:UI自动化框架结构以及思路
在学会使用unittest后,实际上UI自动化的基础骨架已经搭建起来了,剩下的就是利于这套框架,增添一些我们需要的功能,目前看来,我们已经可以使用此框架来批量运行用例,欠缺的是整体的思路以及一些其他功能细节,比如日志记录、封装webdriver、读取数据库等功能的实现;在网上看了很多别人的框架,以及加上自己的理解后,我在这里分享一下我最终所整理的这套框架。一、框架结构这里是我的一个框架...原创 2019-03-11 22:34:01 · 2633 阅读 · 0 评论 -
web自动化测试第20步:测试用例断言
在运行测试用例时,需要判断用例是否执行成功,此时需要有一个我们期望的结果来进行验证。这里unittest中,如果一个case执行的过程中报错,或者我们判断结果不符合期望,就会判定此条用例执行失败,判断的条件主要是根据断言来实现,这节主要学习下断言的使用。一、断言的方法1.1 TestCase类中的部分断言方法判断条件是否成立assert_(expr,msg)expr:判断条件,...原创 2019-03-07 17:18:07 · 4988 阅读 · 1 评论 -
web自动化测试第19步:使用unittest运行多个测试用例集
上节课,我们开始使用unittest整合测试用例,但是一个项目中,测试用例会有很多,当有很多的测试文件py脚本时,需要一个测试用例集来统一运行,这里就需要使用unittest中的批量运行来跑脚本。一、常用方法详解创建一个测试用例套件unittest.TestSuite(Iterable_testType)Iterable_testType:可迭代的测试用例集合 运行测试用例集...原创 2019-02-15 15:49:16 · 3363 阅读 · 2 评论 -
web自动化测试第18步:单元测试框架unittest
在了解了ui自动化的方法后,实际应用时需要按照测试用例的形式来书写,否则执行起来太过冗余,这里引入一个测试框架:unittest,使用这个框架中编写用例,会更方便管理和运行。一、unitest基础写法格式1.1引用导入import unittest并且需要新建一个类,继承unittestclassDemo(unittest.TestCase):1.2格式代码示例备...原创 2019-02-14 18:06:35 · 1584 阅读 · 2 评论 -
web自动化测试第17步:不会用xpath轴,还说你懂元素定位?关于xpath元素定位详解最终版
你可以不会框架,不会设计模式,但是你不能不懂元素定位,这篇文章教你成为定位大神!!!!!快来学习xpath语法!!原创 2019-02-13 18:07:35 · 2287 阅读 · 2 评论 -
web自动化测试第16步:WebDriverWait元素等待和全局设置
由于现在部分web应用加载方式的选择,页面会需要一定时间逐渐加载完毕,也就是说有的页面元素先加载出来,有的元素后加载出来。如果直接定位所查找的元素的话,可能会由于此元素尚未加载完毕找不到元素从而报错,由于网络不稳定这种情况出现的几率会大很多,一般解决方法的话,time.sleep()函数可以避免一些这种状况,但是缺少了灵活性。在selenium中有关于等待的方法可以比较灵活的解决这个问题,这次主要...原创 2019-02-11 15:55:47 · 2930 阅读 · 0 评论 -
web自动化测试第15步:使用js语句
在selenium中,有方法可以运行js语句,这样的话对于一些selenium中没有的操作,或者实际编写UI自动化中遇到的疑难杂症,多了另外一个解决思路!!!简直像是打开了新世界的大门一样。比如我编写ui自动化脚本遇到一个问题,除了思考python和selenium中哪些方法可以解决之外,还可以网上搜索或者参考学习下js的api文档,看能否通过js的功能来在实际测试中解决问题。js本身是很强大...原创 2019-02-02 23:24:09 · 1647 阅读 · 0 评论 -
web自动化测试第14步:对于cookie的操作
Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。在自动化测试过程中,我们如果想要进行免登陆操作的话,可以通过写入cookie的方式来实现,需要注意的是,网站cookie有时效性,对于关闭浏览器后失效的临时cookie网站来说,无法使用cookie来实现免登陆。接下来具体看一看UI自动化中如何对网站...原创 2019-02-02 15:22:33 · 1987 阅读 · 0 评论 -
web自动化测试第13步:元素定位(2)(webdriver的所有定位方式详解)
一、webdriver中所有的定位方法介绍 在第二节里,我们就接触了webdriver中的8种基础定位方法,但是当我们在pycharm中打出:driver.find时,代码提示中其实是有18个被选项的,这次我们就来讲讲剩余这10种定位方法都是什么,以及它们之间存在的关系。首先有两个万能定位方法:find_element()寻找符合条件的第一个元素 find_elements...原创 2019-01-17 18:03:52 · 2266 阅读 · 1 评论 -
webdriver浏览器版本驱动对应以及下载(火狐-谷歌-IE-edge-safari浏览器)
写在前面:对于webdriver和各个浏览器的版本的对应,我最近发现浏览器驱动的对应在selenium库的源码里都有提及,路径是:python>site-packages>selenium>webdriver>浏览器名称的文件夹>service.py中,里面会有一个指向官网的url地址,这里我把源码里和自己总结的地址汇总如下。谷歌浏览器驱动版本对应以及下载:...原创 2017-07-25 18:48:32 · 34355 阅读 · 4 评论 -
web自动化测试第12步:selenium中下拉框的解决方法(Select)
在之前,遇到下拉框的时候我们可以用两次点击来选择我们需要的选项,不过对于下拉框,我们的webdriver中有封装的Select包单独对于下拉框有一套处理的方法,我们可以来学习一下,然后在测试的时候根据不同的情况来选择需要哪儿种方法。1.select包方法的使用示例以及定位方式select下拉框的定位2.select包内的方法详解1.获取option元素op...原创 2017-08-04 20:41:47 · 15726 阅读 · 2 评论 -
web自动化测试第11步:switch_to包详解:切换handle、frame、alert
在之前的三节里,我们分别对窗口切换(handle)、frame切换、弹窗(alert)切换做了详细的解释,但是我们在写代码的时候发现,这些方法都被编辑器划伤了一条横线,但是方法还是可以正常使用,只是目前的pycharm不推荐你继续这样使用了(有新的方法可以替代它),那如果我们不使用这些方法的话,我们该怎么去完成切换窗口、frame这些操作呢?所以我们来学习一下替代这几个方法的switch_to包。...原创 2017-08-03 23:13:46 · 33388 阅读 · 2 评论 -
web自动化测试第10步:获取浏览器弹窗alert、自定义弹窗以及其操作
在平时的测试中,有时候会遇到弹窗的问题,有的是浏览器弹窗(alert)、有的是自定义弹窗;这节我们主要来讨论一下关于浏览器弹窗和简单的自定义弹窗。一、关于alert弹窗的方法备注:部分方法为老写法,官方已经不推荐使用;点击这篇文章查看切换alert的新写法。switch_to_alert(): 定位到alert弹窗,返回一个弹窗的对象dismiss(): 对弹窗对象的取消操作(相当...原创 2017-08-02 11:39:20 · 12522 阅读 · 1 评论 -
web自动化测试第9步:切换页面frame
在实际的测试中,有时候我们会经常遇到找不到元素的问题,这也是自动化测试中经常会遇到的情况,我一般首先考虑的就是是否由于页面中嵌套了frame,从而导致定位不到元素,如果页面代码中没有iframe层,再根据报错信息来考虑原因是否是:元素被隐藏,定位路径不正确等情况。一般下列情况中页面可能包含frame嵌套:后台管理系统中,页面中有一些独立的功能模块,特征是页面显示切换了模块,但是地址栏的URL并...原创 2017-07-28 23:08:00 · 5890 阅读 · 7 评论 -
web自动化测试第8步:浏览器不同页签之间的切换(handle)
我们之前在《web自动化测试第3步:元素的基础操作和浏览器基础操作》这一节里最后预留了一个悬念,就是我们通过点击打开了一个新的页面,这时浏览器同时打开了两个页面,我们用close()方法关闭,却是关闭的初始页面,这时我们如果在新打开的页面来查找元素定位,也一定是定位不到的,所以我们要用到切换浏览器页签:也就是切换句柄handle切换的方法。一、切换页签(句柄handle)的基础用法:备注:...原创 2017-07-27 11:08:48 · 5763 阅读 · 2 评论 -
web自动化测试第7步:模拟键盘事件(Keys)
对于模拟键盘事件,我们之前的文章中已经有了一些了解,比如基础操作send_keys()方法输入任意值、鼠标事件key_down()、key_up()等,这一节呢,我们也比较简单,我们专门来讲一讲如何使用引入的common.keys库来模拟键盘来操控浏览器。一、基础格式写法具体用法其实和我们之前对浏览器输入框所用的方法:send_keys()是一样的,只不过我们通过keys类,可以输入web...原创 2017-07-24 21:00:40 · 6110 阅读 · 0 评论 -
web自动化测试第6步:模拟鼠标操作(ActionChains)
在日常的测试中,经常会遇到需要鼠标去操作的一些事情,比如说悬浮菜单、拖动验证码等,这一节我们来学习如何使用webdriver模拟鼠标的操作首页模拟鼠标的操作要首先引入ActionChains的包from selenium.webdriver.common.action_chains import ActionChains而对于ActionChains包,一般的写法是:原创 2017-07-22 11:34:15 · 15756 阅读 · 9 评论 -
web自动化测试第5步:浏览器/页面信息的获取
上一节讲到了如何利用获得的元素来获取元素的信息,这次来说一下如何获取浏览器相关的信息,主要是页面的路径:URL和页面的标题:title比较常用一定要记住1.获取页面相关信息的方法current_url :当前页面的URL路径title:当前页面的title名称name:当前浏览器名称page_source:当前html页面源码前两个比较常用,可能会用到,比如说页面跳原创 2017-07-20 17:42:08 · 3516 阅读 · 0 评论 -
web自动化测试第4步:页面元素信息(属性)的获取
上一节讲到对于元素的操作和浏览器的常用操作如何通过代码实现,这次来学习如何通过元素和浏览器来获取相应的信息(元素属性、信息、页面titile、URL等)1.获取元素相关的信息size:text:is_displayed( ) is_selected( )get_attribute ( )原创 2017-07-19 15:14:34 · 4175 阅读 · 2 评论 -
web自动化测试第3步:元素的基础操作和浏览器基础操作
上一节,我们了解了如何定位元素,其实也有涉及对于元素的操作,这一节我们就详细的介绍一下对于元素的操作和对于浏览器的一些操作1.对于元素的基础操作:2.对于浏览器的基本操作3.通过代码演示浮现的其他问题原创 2017-07-18 16:36:44 · 3001 阅读 · 0 评论 -
web自动化测试第2步:定位元素
这一节,我们介绍一下页面元素定位的八种方式和如何通过火狐和谷歌浏览器获取元素定位信息,减少自己的工作量1.页面元素的定位方法上一节我们已经配置好了环境并且可以通过脚本打开浏览器了,说明我们已经打开了自动化测试的大门,接下来就开始学习如何定位页面元素html页面是有一个个的标签组成的,我们定位元素其实就是定位这些标签首先来看一下有哪儿几种定位方式:idname...原创 2017-06-01 11:24:44 · 5075 阅读 · 4 评论 -
web自动化测试第1步:UI自动化了解以及python环境配置
一:UI自动化测试介绍 1.什么样的项目适合做自动化测试 当一个项目稳定下来后,需求变动并不大,并且UI页面也较为稳定不会频繁变动时,这是做自动化的一个前提条件。否则一个需求、UI界面经常变动的项目,你费时费力写好的元素定位可能会一朝报废,再来适应新的UI界面以及新需求,这时候的维护精力会很大,也会做很多无用功。 这个项目的开发周期应该是一个长...原创 2017-05-23 16:43:14 · 3886 阅读 · 0 评论