python 3.6 + robotFramework自动化框架 环境搭建、学习笔记
目录
一、环境搭建
1.安装相关的库
2.pycharm
3.IntelliBot
4.pycharm配置执行器
5.fireFox浏览器及对应驱动
二、使用cmd执行
三、案例脚本(.robot文件)基本语法
1.基本语法
2.robot文件中调用自定义库
四、使用SeleniumLibrary库进行web界面自动化测试
五、数据驱动测试
一、环境搭建
概览:win 7+ python 3.6 + pycharm + robotframework + IntelliBot + fireFox
1.安装相关的库
推荐使用pip安装,如 pip install robotframework(以及selenium2library)
研发环境没外网,采用离线安装,down包后解压--进入--python setup.py install
(1)WEB页面测试:
https://pypi.python.org/pypi/robotframework
https://pypi.python.org/pypi/selenium#downloads #依赖包
https://pypi.python.org/pypi/robotframework-seleniumlibrary #依赖包
https://pypi.python.org/pypi/robotframework-selenium2library
(2)接口测试:
在线:pip install requests
离线:
https://pypi.python.org/pypi/certifi #依赖包
https://pypi.python.org/pypi/urllib3#downloads #依赖包
https://pypi.python.org/pypi/idna#downloads #依赖包
https://pypi.python.org/pypi/chardet/#downloads #依赖包
https://pypi.python.org/pypi/requests#downloads
2.pycharm
开发IDE, 略
3.IntelliBot
pycharm开发插件【语法高亮】
方法1:pycharm>File>setting>Plugins>Browse reponsitories
方法2:https://plugins.jetbrains.com/plugin/7386-intellibot 下载至本地
pycharm>File>setting>Plugins>install plugin from disk
4.pycharm配置执行器
File>setting>Tools>External tool,配置完成后即可在.robot文件中选择使用该执行器执行
Parameters:当前文件路径
Working directory:工作路径,日志、结果输出等,如下:
注:log.html 执行日志
output.xml 执行相关信息的xml,可用于后续二次解析
report.xml 执行结果报表
5.fireFox浏览器及对应驱动
(1)浏览器
https://www.mozilla.org/zh-CN/firefox/developer/
(2)驱动
https://github.com/mozilla/geckodriver/releases/download/v0.19.1/geckodriver-v0.19.1-win64.zip
解压(geckodriver.exe)拷贝至python安装目录
二、使用cmd执行
运行一条用例:
pybot --test test_case test_suit.robot
运行指定文件:
pybot test_suit.robot
运行当前目录下以.robot为后缀名的测试文件
pybot *.robot
运行当前testpath目录下的所有用例
pybot testpath
三、案例脚本(.robot文件)基本语法
1.基本语法
*** Settings ***
Library MyLib #导入自定义的库
Library SeleniumLibrary*** Test Cases ***#第一行为固定格式,标识#建议同python一致,使用tab缩进对齐(pycharm中设置tab=4空格),否则可能报执行失败,报 "Test case contains no keywords"
case1 helloworld #案例名log chenyuebai first rfw case #log 相当于python的print,可在生成的log.xml中查看case 2 log #打异常日志,支持多种级别log test line 2 ERRORcase 3 varible${myname} Set variable chen #定义变量log my name is ${myname} #使用变量#case 4 use varible #变量作用域为其定义所在的案例(case3),否则报"Variable '${myname}' not found."
# log ${myname}case 5 Catenate${hi1} Catenate hello world #定义变量方式2 连接两个对象,支持自定义连接符log ${hi1}${hi2} Catenate SEPARATOR=---- hello worldlog ${hi2}case 6 list@{mylist} create list a b c #定义列表log many @{mylist} #打印列表中的元素case 7 get time${currentTime} get time #获取当前时间 2018-01-02 18:05:47log ${currentTime}${currentYear} get time format=year #支持多种传参,详情看函数定义log current year is ${currentYear}case 8 sleeplog get timesleep 1 #睡眠,等同于python的time.sleep(5)log get timecase 9 if${score} set variable 55run keyword if ${score}>=90 log 优秀... ELSE IF ${score}>=70 log 良好 #ELSE/ELSE IF要大写。。。语法很蛋疼。。为啥不直接套用python的语法。。... ELSE log 很差 # ... 不知道基于什么考虑的。。看起来像是标识属于“run keyword if”这个判断逻辑;类似python的tab?case 10 for #for循环,注意需要使用\来标识这个for循环范围,感觉和上面的...类似:FOR ${i} IN RANGE 5 # for in in range(5):\ log ${i} # print(i)case 11 allround the list@{myList} create list 1 2 3 4 # myList = [1,2,3,4]:FOR ${i} IN @{myList} # for i in myList:\ log ${i} # print(i)case 12 Evauate #调用python中的方法,很强大${randomNum} EVALUATE random.random() random #变量 关键字EVALUATE 调用python的方法 方法所在的库名log ${randomNum}case 13 call my python #导入自定义库,下面有详细说明${nowTime} get current timelog ${nowTime}case 14 Commentlog start#line 1comment line 2 #标明注释:使用关键字或者#均可log endcase 15 Selenium2Library #Selenium2Library库,操作浏览器,可作web界面自动化,待细化open_browser http://www.baidu.com firefoxInput text id=kw 陈月白click button id=susleep 3close Browser
2.robot文件中调用自定义库
Selenium2Library提供了很多的方法,但在实际使用中仍有部分场景需要自行编写,robotFramework支持导入用户自定义的库。
需注意文件名、类名的对应关系,否则会导入库失败;
在...\python安装路径\Lib\site-packages下:
(1)自定义方法所在的文件:MyKeywords.py
import time
class MyKeywords():def __init__(self):pass#获取当前时间def get_current_time(self):current_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))return current_time
(2)创建__init__.py
"""
继承自定义库中的类,rfw会解析类中的函数作为关键词
"""
from .MyKeywords import *class MyRobotFwkLib(MyKeywords):ROBOT_LIBRARY_SCOPE = "GLOBAL"
(3).robot文件导入自定义类,即可使用类中的方法
*** Settings ***
Library MyRobotFwkLib #导入自定义的库case 13 call my python ${nowTime} get current timelog ${nowTime}
四、使用SeleniumLibrary库进行web界面自动化测试
SeleniumLibrary提供很多基础关键字,基本可以模拟完成浏览器上大部分操作;
另外还支持将基础关键字按业务逻辑封装为高级关键字(可以理解为一个函数,下面有例子);
支持指定多种浏览器,按元素标识操作元素;
定位元素工具我用的火狐的插件:firePath、fireBug,很方便;
基础关键字(SeleniumLibrary自带) + 高级关键字(按实际业务对基础关键字封装) + 用户自定义库中的关键字(上面有配置实例),几乎可以满足大多数web应用各种业务场景;
ps:调试时发现许多关键字无法查看定义,不方便看用法及传参,但实际执行时又没问题;
看了下SeleniumLibrary库的__init__.py,确定是因为多数涉及的关键字库,都是在启动执行时,初始化继承过来的;
于是笨方法,直接全量引入,目前来看也没什么影响。
实现项目后台登录及校验:
*** Settings ***
#方便IDE调试,不添加无法找到关键字定义
Library browsermanagement
Library AlertKeywords
Library BrowserManagementKeywords
Library CookieKeywords
Library ElementKeywords
Library FormElementKeywords
Library FrameKeywords
Library JavaScriptKeywords
Library RunOnFailureKeywords
Library ScreenshotKeywords
Library SelectElementKeywords
Library TableElementKeywords
Library WaitingKeywords
Library WindowKeywordsLibrary SeleniumLibrary#配置套件级别的Setup和Teardown
Suite Setup
... log now test start 1 #只执行一条Suite Teardown Run Keywords
... close all browsers AND #执行多条
... log now end 4#全局变量
*** Variables ***
${loginPageUrl} http://10.XX.XX.232:9XX0/admin/index.do?index=1
${validUsername} admin
${validloginPasswd} adminpasswd*** Test Cases ***
case 1 correct login test#配置用例级别的Setup和Teardown[setup] log setup log 2[teardown] log teardown log 3correctLoginTest ${validUsername} ${validloginPasswd} #使用基础关键字封装出的高级关键字#使用基础关键字封装高级关键字,类似python的一个函数,支持入参出参,很灵活
*** Keywords ***
correctLoginTest[Arguments] ${uasename} ${passwd}open browser ${loginPageUrl} firefoxsetBrowserinput text xpath=html/body/div[1]/form/input[1] ${uasename}input text xpath=html/body/div[1]/form/input[2] ${passwd}click element class=submitsleep 5
# ${page1_title} get title #获取页面title,可后续校验页面是否到达
# ${width} ${height} get window size #获取浏览器窗口大小
# select window NEW #切换到新弹出窗口(视图焦点)page should contain element xpath=//*[@id='topMenu4'] #系统管理菜单sleep 2close all browserssetBrowserset window size 1024 768 #设置浏览器窗口大小maximize browser window #浏览器窗口最大化sleep 1
五、数据驱动测试
数据驱动测试,适合相同流程、相同预期结果下,不同输入组合的测试
比如测试异常登录流程,用户名、密码在错误(或空)各种组合下的异常验证
例子:
*** Settings ***
Library SeleniumLibrary
Test Template errorLoginTest #公共逻辑*** Variables ***
${loginPageUrl} http://10.XX.XX.232:9XX0/admin/index.do?index=1
${validUsername} admin
${validloginPasswd} adminpasswd*** Test Cases *** username passwd
#异常登录测试
case 2:Invalid Username invalidname ${validloginPasswd}case 3:Invalid Password ${validUsername} invalidPasswdcase 4:Invalid Both invalidName invalidPasswdcase 5:Empty Username ${EMPTY} ${validloginPasswd}case 6:Empty Password ${validUsername} ${EMPTY}case 7:Empty Both ${EMPTY} ${EMPTY}*** Keywords ***
errorLoginTest[Arguments] ${uasename} ${passwd}open browser ${loginPageUrl} firefoxinput text xpath=html/body/div[1]/form/input[1] ${uasename}input text xpath=html/body/div[1]/form/input[2] ${passwd}click element class=submitsleep 5page should contain element class=submit 5 error:预期应含登录元素未找到【即跳转失败】sleep 5close all browsers
执行结果:
python 3.6 + robotFramework自动化框架 环境搭建、学习笔记相关推荐
- 【卷积神经网络环境搭建学习笔记】
卷积神经网络环境搭建学习笔记 前言 首先,特别感谢B站UP主:肆十二- csdn链接:https://blog.csdn.net/ECHOSON/article/details/117964438 再 ...
- Class4 Linux云上环境搭建学习笔记
Class4 Linux云上环境搭建学习笔记 Linux的远程管理 为Linux环境安装图形化桌面(Gnome) 学习Linux的基本操作 更新一个官方教程 附阿里云高校学习计划的地址 class4 ...
- 开发板qt移植和交叉开发环境搭建学习笔记
tslib移植 准备工作 开发板有uboot 搭建tftp服务器,开发板可通过服务器下载内核并启动: nfs工具,开发板可通过nfs工具加载到主机(电脑)的rootfs: 触摸屏可使用,在cat触 ...
- KIF自动化框架环境搭建
互相学习,请关注我的微博:weibo.com/ganchaojiang 1.推荐方式(CocoaPods) 1.1.命令行安装pod: sudo gem install cocoapods 1.2.x ...
- NGINX+UWSGI+PYTHON+FLASK环境搭建——————学习笔记
搭建环境 安装依赖包 #yum -y install gcc gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel GroOP g ...
- Python+大数据-知行教育(一)-环境搭建 数据仓库
Python+大数据-知行教育(一)-环境搭建 数据仓库 1. 教育项目的数仓分层 回顾: 原有的基础分层 ODS层: 源数据层作用: 对接数据源, 和数据源的数据保持相同的粒度(将数据源的数据完整的 ...
- Python 网站开发(一)环境搭建
前些天看到小阳买回来的一本 Python 基础教程,于是就产生了使用 Python 来开发一个小博客的想法.这个 Python 网站开发系列文章将不会过多说 Python 基本语法,主要是面向实践的. ...
- python+requests+pytest 接口自动化框架(一)
目录 一.Pytest详解以及常用的插件安装 二.Pytest默认的测试用例的规则 三.Pytest用例运行方式以及参数 1.命令行模式运行 命令:pytes 2.主函数模式运行 3.基于pytest ...
- SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)
SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一) 1. 前言 最近在写毕设过程中,重新梳理了一遍SSM框架,特此记录一下. 附上源码:https://gitee ...
最新文章
- NAR:gcMeta——全球微生物组数据存储和标准化分析平台
- C#程序输出信息到调试窗口的几种方式
- 在ASP.NET中利JavaScript实现控件的聚焦
- 20165232 缓冲区溢出漏洞实验
- flask-restful接口
- 使用Struts接受Ajax请求并且返回Json数据
- 创建自定义主机头的网站集
- 如何完全卸载oracle和删除oracle在注册表中的注册信息
- 在Idea中连接数据库并生成实体类(mybatis逆向生成实体类)
- 如何开发出一个完整的Java Web项目?
- 他们每天都在为梦想排除万难,那你呢?
- 谷歌插件开发ajax请求,2020-01-03(chrome插件:拦截ajax请求并修改返回结果)
- eigen 编译_四足机器人优化方法:Webots下Eigen与qpOASES非线性优化库环境搭建
- 8700k超频测试软件,双节+双核,i7 8700k +Z370 Extreme4超频测试
- Fingerprint2 生成浏览器指纹应用
- windows使用docker-compose安装PHP框架hyperf
- 懂车帝视频连接--JS逆向
- 3D打印无人机等无人设备6——谈一谈从设计到实践的分分合合,模型如何合并与拆分?
- 永信至诚成功当选CNCERT网络安全应急服务支撑单位
- 虚拟串口工具VSPD简单使用