前言 当测试用例写完后,有些模块有改动时候,会影响到部分用例的执行,这个时候我们希望暂时跳过这些用例. 或者前面某个功能运行失败了,后面的几个用例是依赖于这个功能的用例,如果第一步就失败了,后面的用例也就没必要去执行了,直接跳过就行,节省用例执行时间. 一.skip装饰器 skip装饰器一共有四个    @unittest.skip(reason) Unconditionally skip the decorated test. reason should describe why the te…
前言 当测试用例写完后,有些模块有改动时候,会影响到部分用例的执行,这个时候我们希望暂时跳过这些用例. 或者前面某个功能运行失败了,后面的几个用例是依赖于这个功能的用例,如果第一步就失败了,后面的用例也就没必要去执行了,直接跳过就行,节省用例执行时间. 一.skip装饰器 skip装饰器一共有四个 @unittest.skip(reason) Unconditionally skip the decorated test. reason should describe why the test…
前言 当测试用例写完后,有些模块有改动时候,会影响到部分用例的执行,这个时候我们希望暂时跳过这些用例. 或者前面某个功能运行失败了,后面的几个用例是依赖于这个功能的用例,如果第一步就失败了,后面的用例也就没必要去执行了,直接跳过就行,节省用例执行时间. 一.skip装饰器 skip装饰器一共有四个    @unittest.skip(reason) Unconditionally skip the decorated test. reason should describe why the te…
1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py >test_case >__init__.py >test_case1..... >public >__init__.py >login.py >loginout.py test_case文件夹主要存放测试用例,且测试用例命名以test_开头 public文件夹是test…
unittest框架的学习得益于虫师的<selenium+python自动化实践>这一书,该书讲得很详细,大家可以去看下,我也只学到一点点用于工作中,闲暇时记录下自己所学才能更加印象深刻.unittest框架学习需要掌握以下知识点: (1)Selenium原理及工具使用 (2)webdriver元素定位,id,name,class name,css seletor,xpath (3)python语言基础,模块,参数化,语言,装饰器 (4)unittest框架认识及学习:模块化,断言,参数化,数…
前言 在web自动化下载操作时,有时候会弹出下载框,这种下载框不属于web的页面,是没办法去定位的(有些同学一说到点击,脑袋里面就是定位!定位!定位!) 有时候我们并不是非要去定位到这个按钮再去点击,学会使用键盘的快捷键操作,也能达到一样的效果. 之前讲过一篇Selenium2+python自动化75-非input文件上传(SendKeys)这个当时是基于python2写的. 最近很多小伙伴开始用python3了,这个SendKeys在python3上没法用,python3需要用PyUserIn…
前言 文件下载时候会弹出一个下载选项框,这个弹框是定位不到的,有些元素注定定位不到也没关系,就当没有鼠标,我们可以通过键盘的快捷键完成操作. SendKeys库是专业的处理键盘事件的,所以这里需要用SendKeys解决 只支持python2环境 python3 的用 PyUserInput 看这篇 selenium+python自动化85-python3.6上SendKeys报错用PyUserInput取代 一.下载场景 1.当点到下载按钮时候,会弹出如下页面 2.如果想点“保存文件”按钮,解决…
在利用单元测试框架执行测试用例的过程中,有时只需要执行一部分用例,或者跳过某些暂不需要执行的用例,python的unittest框架就内置这样的功能. 前面的博客介绍了unittest框架的测试用例加载和批量执行的内容,這篇博客,介绍下在unittest框架中,如何跳过预期的测试用例... 1.unittest.skip()方法 跳过测试和预期失败的功能,是python3.1版本开始,出现的新功能.unittest支持跳过单个测试用例甚至整个测试类. skip()的各个方法说明如下: 方法 说明…
利用selenium+python写的一个关于登录的自动化脚本…
Selenium2+python自动化之读取Excel数据(xlrd) 转载地址:http://www.cnblogs.com/lingzeng86/p/6793398.html ···························································································································…
因为webdriver的api方法很长,再加上大多数的定位方式是以xpath方式定位,更加让代码看起来超级长,为了使整体的代码看起来整洁,对webdriver进行封装,学习资料来源于虫师的<selenium +  python自动化测试>一书. 在与测试用例文件夹同一目录下新建一个文件夹package,用来放置封装方法的模块文件 我们将webdriver二次封装的文件命名为location.py from selenium import webdriver from test_case.pub…
前言 登录页面会遇到滑动解锁,滑动解锁的目的就是为了防止别人用代码登录(也就是为了防止你自动化登录),有些滑动解锁是需要去拼图这种会难一点. 有些直接拖到最最右侧就可以了,本篇讲下使用 selenium web 自动化的时候如何滑动解锁. 滑动解锁场景 看下图,是我本地写的一个 slider.html 网页 除了输入账号和密码,还需将滑块拖动到最右端才能解锁 最后才去点登陆按钮 ActionChains 滑动滑块 查看 ActionChains 使用源码,相关介绍 ActionChains是一种…
当测试用例写完后,有些模块有改动时候,会影响到部分用例的执行,这个时候我们希望暂时跳过这些用例. 或者前面某个功能运行失败了,后面的几个用例是依赖于这个功能的用例,如果第一步就失败了,后面的用例也就没必要去执行了,直接跳过就行,节省用例执行时间. 一.skip装饰器 skip装饰器一共有四个    @unittest.skip(reason) Unconditionally skip the decorated test. reason should describe why the test…
1.装饰器,放在函数前面,跳过用例 @pytest.mark.skip(reason="no way of currently testing this") import pytest def test1(): print('操作1') print("-----------------------------------------------") @pytest.mark.skip(reason="no way of currently testing…
前言 selenium多线程跑用例,这个前面一篇已经解决了,如何生成一个测试报告这个是难点,刚好在github上有个大神分享了BeautifulReport,完美的结合起来,就能生成报告了. 环境必备: python3.6 : BeautifulReport不支持2.7 tomorrow : pip install tomorrow安装 BeautifulReport : github下载后放到/Lib/site-packages/目录下 BeautifulReport 1.BeautifulR…
前言 假设执行一条脚本(.py)用例一分钟,那么100个脚本需要100分钟,当你的用例达到一千条时需要1000分钟,也就是16个多小时... 那么如何并行运行多个.py的脚本,节省时间呢?这就用到多线程了,理论上开2个线程时间节省一半,开5个线程,时间就缩短五倍了. 项目结构 1.项目结构跟之前的设计是一样的: case test开头的.py用例脚本 common 放公共模块,如HTMLTestRunner report 放生成的html报告 run_all.py 用于执行全部脚本 2.case…
优化html报告 为了满足小伙伴的各种变态需求,为了装逼提升逼格,为了让报告更加高大上,测试报告做了以下优化: 测试报告中文显示,优化一些断言失败正文乱码问题 新增错误和失败截图,展示到html报告里 优化点击截图放大不清晰问题 增加饼图统计 失败后重试功能 兼容python2.x 和3.x 报告效果 1.生成的测试报告效果如下图,默认展示报错和异常的用例,失败重试的用例结果也会统计进去. 2.点击显示截图,可以直接显示截取的图片,无需保存到本地 table表格 1.修改表格的td后面内容,可以…
1.安装python,下载地址:http://python.org---安装版本3.5.1 ps:自带setuptools和pip工具 2.然后,用pip安装开发Web App需要的第三方库:异步框架aiohttp:$pip install aiohttp 3.前端模板引擎jinja2:$ pip install jinja2 4.MySQL 5.x数据库,从官方网站下载并安装,安装完毕后,请务必牢记root口令---test234 5.MySQL的Python异步驱动程序aiomysql:$…
环境准备 前言 selenium在windows机器上运行,每次会启动界面,运行很不稳定.于是想到用chrome来了的headless无界面模式,确实方便了不少. 为了提高自动化运行的效率和稳定性,于是把selenium自动化环境部署到linux服务器上,这样更方便. 环境: centons 7.6 python 3.6 chrome 77.0.3865.90 chromedriver 77.0.3865.40 selenium 3.14 安装最新版chrome 方法一:下载到本地后安装 先下载…
自动化按步骤拆分的话,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇接下来讲基本的八种元素定位方法.说的通俗一点,就是教大家找对象. 万物皆对象,所谓的对象,就是你喜欢的那个女神,她就是你的对象.既然是对象,她就有属性,比如眼睛大,头发长,皮肤白,颜值高.这些都是她的属性,每个属性又有对应的属性值,如眼睛="大",头发="长",颜值="高",对应的=后面就是它的属性的值. 同样的道…
一.打开网站 1.第一步:从selenium里面导入webdriver模块 2.打开Firefox浏览器(Ie和Chrome对应下面的) 3.打开百度网址 二.设置休眠 1.由于打开百度网址后,页面加载需要几秒钟,所以最好等到页面加载完成后再继续下一步操作 2.导入time模块,time模块是Python自带的,所以无需下载 3.设置等待时间,单位是秒(s),时间值可以是小数也可以是整数 三.页面刷新 1.有时候页面操作后,数据可能没及时同步,需要重新刷新 2.这里可以模拟刷新页面操作,相当于浏…
一.Python安装 1.操作系统:win7 64位系统 2.下载Python安装包,选择2.7版本和3.6版本都可以(最好安装2.7版本稳定)官网下载地址:https://www.python.org/ 3.Python安装,双击傻瓜式安装 4.安装目录在d盘:D:\python 二.环境变量 1.安装完成后,看下这个目录D:\python\Scripts,有没pip.exe和easy_install.exe这两个文件(一般都有) 2.将D:\python和D:\python\Scripts路…
浏览器页面跳转方法记录: from selenium import webdriver import time browser = webdriver.Chrome() first_url='http://www.baidu.com' browser.find_element_by_xpath('//div/div/div/ul/li[1]/strong/a').click() browser.switch_to_window(browser.window_handles[0]) browser…
1.selenium安装: pip install -U selenium参考:https://pypi.python.org/pypi/selenium#downloads2.下载firefox驱动:https://github.com/mozilla/geckodriver/releases3.把geckodriver.exe所在目录配置到path环境变量4.一个简单示例: from selenium import webdriver driver=webdriver.Firefox() #…
前言 我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到unittet里面的discover方法来加载用例了. 加载用例后,用unittest里面的TextTestRunner这里类的run方法去一次执行多个脚本的用例. unittest模块中的TestLoader类有一个discover方法(Python2.7之后)discover(start_dir, pattern='test*.py',top_level_dir=None)递归查找指定目录(s…
前言 前一篇autoit实现文件上传打包成.exe可执行文件后,每次只能传固定的那个图片,我们实际测试时候希望传不同的图片. 这样每次调用的时候,在命令行里面加一个文件路径的参数就行. 一.命令行参数 1.参数化传入的参数,可以通过autoit的命令行参数: myProg.exe param1 "This is a string parameter" 99 在脚本中,可用以下变量获取命令行参数: $CmdLine[0] ; = 3 $CmdLine[1] ; = param1 $Cmd…
前言 paramunittest是unittest实现参数化的一个专门的模块,可以传入多组参数,自动生成多个用例 前面讲数据驱动的时候,用ddt可以解决多组数据传入,自动生成多个测试用例.本篇继续介绍另外一个参数化的框架paramunittest,也能实现一样的效果. 环境准备 1.先pip 下载安装 paramunittest pip install paramunittest 官方文档 1.官方文档地址:https://pypi.python.org/pypi/ParamUnittest/…
前言 背景介绍:做wap页面自动化的时候,把url地址直接输入到浏览器(chrome浏览器有手机wap模式)上测试,有个按钮死活点不到,用wap模式的触摸事件也无法解决,后来想用jquery去执行点击. 发现报$ is not defined. # coding:utf-8 # 作者:上海-悠悠 import time from selenium.webdriver.chrome.options import Options from selenium import webdriver from…
遇到问题 报错信息:sys.meta_path is None, Python is likely shutting down 1.我的环境: python 3.6 selenium 2.53.6 chrome 65 chromedriver 2.33.50 2.执行代码: # 作者:上海-悠悠 from selenium import webdriver driver = webdriver.Chrome() driver.get("https://www.cnblogs.com/yoyoke…
前言 selenium+phantomjs可以打开无界面的浏览器,实现静默模式启动浏览器完成自动化测试,这个模式是极好的,不需要占用电脑的屏幕. 但是呢,phantomjs这个坑还是比较多的,并且遇到问题也看不到页面,无法排查问题. 事实上Chrome浏览器也是可以实现静默模式,在电脑上不显示页面,也能实现自动化测试. 小编环境: python 3.6 selenium 3.6.0 chrome 63.0.3239.84 chromdriver 2.33.506120 (我这个配置是亲测可行的,…