目录

一、环境搭建

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自动化框架 环境搭建、学习笔记相关推荐

  1. 【卷积神经网络环境搭建学习笔记】

    卷积神经网络环境搭建学习笔记 前言 首先,特别感谢B站UP主:肆十二- csdn链接:https://blog.csdn.net/ECHOSON/article/details/117964438 再 ...

  2. Class4 Linux云上环境搭建学习笔记

    Class4 Linux云上环境搭建学习笔记 Linux的远程管理 为Linux环境安装图形化桌面(Gnome) 学习Linux的基本操作 更新一个官方教程 附阿里云高校学习计划的地址 class4 ...

  3. 开发板qt移植和交叉开发环境搭建学习笔记

    tslib移植 准备工作   开发板有uboot 搭建tftp服务器,开发板可通过服务器下载内核并启动: nfs工具,开发板可通过nfs工具加载到主机(电脑)的rootfs: 触摸屏可使用,在cat触 ...

  4. KIF自动化框架环境搭建

    互相学习,请关注我的微博:weibo.com/ganchaojiang 1.推荐方式(CocoaPods) 1.1.命令行安装pod: sudo gem install cocoapods 1.2.x ...

  5. NGINX+UWSGI+PYTHON+FLASK环境搭建——————学习笔记

    搭建环境 安装依赖包 #yum -y install gcc gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel GroOP g ...

  6. Python+大数据-知行教育(一)-环境搭建 数据仓库

    Python+大数据-知行教育(一)-环境搭建 数据仓库 1. 教育项目的数仓分层 回顾: 原有的基础分层 ODS层: 源数据层作用: 对接数据源, 和数据源的数据保持相同的粒度(将数据源的数据完整的 ...

  7. Python 网站开发(一)环境搭建

    前些天看到小阳买回来的一本 Python 基础教程,于是就产生了使用 Python 来开发一个小博客的想法.这个 Python 网站开发系列文章将不会过多说 Python 基本语法,主要是面向实践的. ...

  8. python+requests+pytest 接口自动化框架(一)

    目录 一.Pytest详解以及常用的插件安装 二.Pytest默认的测试用例的规则 三.Pytest用例运行方式以及参数 1.命令行模式运行 命令:pytes 2.主函数模式运行 3.基于pytest ...

  9. SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)

    SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一) 1. 前言 最近在写毕设过程中,重新梳理了一遍SSM框架,特此记录一下. 附上源码:https://gitee ...

最新文章

  1. NAR:gcMeta——全球微生物组数据存储和标准化分析平台
  2. C#程序输出信息到调试窗口的几种方式
  3. 在ASP.NET中利JavaScript实现控件的聚焦
  4. 20165232 缓冲区溢出漏洞实验
  5. flask-restful接口
  6. 使用Struts接受Ajax请求并且返回Json数据
  7. 创建自定义主机头的网站集
  8. 如何完全卸载oracle和删除oracle在注册表中的注册信息
  9. 在Idea中连接数据库并生成实体类(mybatis逆向生成实体类)
  10. 如何开发出一个完整的Java Web项目?
  11. 他们每天都在为梦想排除万难,那你呢?
  12. 谷歌插件开发ajax请求,2020-01-03(chrome插件:拦截ajax请求并修改返回结果)
  13. eigen 编译_四足机器人优化方法:Webots下Eigen与qpOASES非线性优化库环境搭建
  14. 8700k超频测试软件,双节+双核,i7 8700k +Z370 Extreme4超频测试
  15. Fingerprint2 生成浏览器指纹应用
  16. windows使用docker-compose安装PHP框架hyperf
  17. 懂车帝视频连接--JS逆向
  18. 3D打印无人机等无人设备6——谈一谈从设计到实践的分分合合,模型如何合并与拆分?
  19. 永信至诚成功当选CNCERT网络安全应急服务支撑单位
  20. 虚拟串口工具VSPD简单使用

热门文章

  1. Parallels虚拟机Linux和Mac之间共享文件夹
  2. Leetcode 1834. Single-Threaded CPU [Python]
  3. 推荐系统中的冷启动问题
  4. 报名学习开课吧Java商业项目实战就业班
  5. MySQL基础(四)运算符
  6. M1 Mac使用PD虚拟机配合VSC代替Keil烧录MM32单片机
  7. 复工复产调研实践报告
  8. OllyDbg、IDA、WINDBG
  9. 麓言信息UI设计和平面设计有什么区别?
  10. AI 实战篇 |十分钟学会【动物识别】,快去寻找身边的小动物试试看吧【送书】