################################################################# 
#author: 陈月白
#_blogs: http://www.cnblogs.com/chenyuebai/
#################################################################

一、环境搭建
概览: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
 - - - -
若想安装RIDE(界面编辑工具)需安装:
1.six  https://pypi.python.org/simple/six/    1.6.0  wxPython安装依赖
2.wxPython:  https://pypi.python.org/pypi/wxPython  --  wxPython-4.0.0-cp36-cp36m-win_amd64.whl (md5, pgp)
3.发现RIRE不支持python3.X。。。打扰了

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 ERROR case 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 world
log ${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:47
log ${currentTime}
${currentYear} get time format=year #支持多种传参,详情看函数定义
log current year is ${currentYear} case 8 sleep
log get time
sleep 1 #睡眠,等同于python的time.sleep(5)
log get time case 9 if
${score} set variable 55
run 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 time
log ${nowTime} case 14 Comment
log start
#line 1
comment line 2 #标明注释:使用关键字或者#均可
log end case 15 Selenium2Library                     #Selenium2Library库,操作浏览器,可作web界面自动化,待细化
open_browser http://www.baidu.com firefox
Input text id=kw 陈月白
click button id=su
sleep 3
close 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 time
log ${nowTime}

使用SeleniumLibrary库进行web界面自动化测试

#todo

20180126

- - - -

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 WindowKeywords Library 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 3 correctLoginTest ${validUsername} ${validloginPasswd} #使用基础关键字封装出的高级关键字 #使用基础关键字封装高级关键字,类似python的一个函数,支持入参出参,很灵活
*** Keywords ***
correctLoginTest
[Arguments] ${uasename} ${passwd}
open browser ${loginPageUrl} firefox
setBrowser
input text xpath=html/body/div[1]/form/input[1] ${uasename}
input text xpath=html/body/div[1]/form/input[2] ${passwd}
click element class=submit
sleep 5
# ${page1_title} get title #获取页面title,可后续校验页面是否到达
# ${width} ${height} get window size #获取浏览器窗口大小
# select window NEW #切换到新弹出窗口(视图焦点)
page should contain element xpath=//*[@id='topMenu4'] #系统管理菜单
sleep 2
close all browsers setBrowser
set window size 1024 768 #设置浏览器窗口大小
maximize browser window #浏览器窗口最大化
sleep 1

20180201

- - - -

2018.02.06

数据驱动测试

数据驱动测试,适合相同流程、相同预期结果下,不同输入组合的测试

比如测试异常登录流程,用户名、密码在错误(或空)各种组合下的异常验证

例子:

*** 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} invalidPasswd case 4:Invalid Both invalidName invalidPasswd case 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} firefox
input text xpath=html/body/div[1]/form/input[1] ${uasename}
input text xpath=html/body/div[1]/form/input[2] ${passwd}
click element class=submit
sleep 5
page should contain element class=submit 5 error:预期应含登录元素未找到【即跳转失败】
sleep 5
close all browsers

执行结果:

python 3.6 + robotFramework自动化框架 环境搭建、学习笔记的更多相关文章

  1. Robotframework自动化1-Windows环境搭建

    前言: robotframework环境搭建-环境准备 1.python2,pip2 2.WxPython 3.Robot Framework 4.Robotframework-ride 5.RIDE ...

  2. 【selenium】- 自动化框架环境搭建

    本文由小编根据慕课网视频亲自整理,转载请注明出处和作者. 1. 环境搭建 本课程选用的是selenium + java.   2. java环境的搭建 环境变量配置: 以win10为例,打开控制面板& ...

  3. robot framework 自动化框架环境搭建

    win10 64位系统 1.安装python2.7.15 在官网https://www.python.org/downloads/下载对应版本 在同一台电脑上同时安装Python2和Python3参考 ...

  4. RobotFramework自动化测试之环境搭建安装教程(一)

    RobotFramework是基于Python语言的工具,所以装RF之前要先安装Python: Python现在有2.7跟3.5两个版本,如果是先装了3.5的话,是装不了2.7的.只有先装2.7的 才 ...

  5. Robotframework自动化2-Windows环境搭建

    前言 上节主要介绍了部分的robotframework搭建,如果想运行APP的话,还需要进一步配置环境. 需要安装的软件 1.Android-sdk-windows 2.JDK 3.Appium-de ...

  6. redis环境搭建学习笔记

    学习环境为windows.java环境 一.学习教程: 1.菜鸟教程:http://www.runoob.com/redis/redis-tutorial.html 2.redis中文网:http:/ ...

  7. Robot Framework自动化_环境搭建以及第一个用例

    Robot Framework自动化_环境搭建以及第一个脚本 培训老师:肖能尤 2016/06/07 课程目的 一.Robot framework 环境搭建以及第一个脚本 课程内容 1    安装前准 ...

  8. Android自动化测试之环境搭建

    Android自动化测试之环境搭建 一.Android-sdk介绍 SDK(Software development kit)软件开发工具包.被软件开发工程师用于为特定的软件包.软件框架.硬件平台. ...

  9. Go语言及Beego框架环境搭建

    在开始环境搭建之前,我们先一起来看看: Go有什么优势: 不用虚拟机,它可直接编译成机器码,除了glibc外没有其他外部依赖,部署十分方便,就是扔一个文件就完成了. 天生支持并发,可以充分的利用多核, ...

随机推荐

  1. realloc(void *__ptr, size_t __size)

    #include <stdlib.h>realloc(void *__ptr, size_t __size):更改已经配置的内存空间,即更改由malloc()函数分配的内存空间的大小.如果 ...

  2. CF1227D Optimal Subsequences

    思路: 首先对于单个查询(k, p)来说,答案一定是a数组中的前k大数.如果第k大的数字有多个怎么办?取索引最小的若干个.所以我们只需对a数组按照值降序,索引升序排序即可. 多个查询怎么办?离线处理. ...

  3. Java基础:类文件结构及类加载

    Class文件结构 魔数 4bits 确定该文件是否是可接受的Class文件(0xCAFEBABE) 版本号 4bits 包括次版本号和主版本号 常量池 包括字面量(文本字符串,声明为final的常量 ...

  4. VC.DNS解析(winsock)

    1.尝试了 gethostbyname(...) 和 Qt598中的qhostinfo::fromname(...),都可以解析出来IP,但是有一个问题:域名指向的IP改变了,这两种方式需要等较长时间 ...

  5. mybatis xml动态语句写法

    mapper.java: /** * @Description: 根据摄像机Id查询出入记录 * @Param: * name 姓名 * monitorId 布控ID * starttime 开始时间 ...

  6. 使用speedtest-cli测量服务器带宽

    使用speedtest-cli测量服务器带宽,这个是python写的工具,很方便,只需要在服务器端安装即可. 1.安装python-pip # yum install python-pip –y 2. ...

  7. LeetCode 617. 合并二叉树(Merge Two Binary Trees)

    617. 合并二叉树 617. Merge Two Binary Trees 题目描述 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠. 你需要将他们合并为一个新 ...

  8. 022 Android .9图片的含义及制作教程

    1.图片(.9.png格式)的概念 (1)9patch图片是andriod app开发里一种特殊的图片形式,文件的扩展名为:.9.png (2)9patch图片的作用就是在图片拉伸的时候保证其不会失真 ...

  9. 微信自研生产级paxos类库PhxPaxos实现原理介绍

    转载自:   http://mp.weixin.qq.com/s?__biz=MzI4NDMyNTU2Mw==&mid=2247483695&idx=1&sn=91ea4229 ...

  10. tomcat+java+redis环境linux安装

    最近要加一个环境测试,自力更生,丰衣足食,记下来下次安装环境速度快点 java jdk-1.80_131 64位 这个jdk 对于初次下载的人要注意,oracel现在不登录不让下载,而注册用户时页面无 ...