原作者:逆之時間軸
原出处:CSDN
原文链接:blog.csdn.net/yydoraemo
版权声明:本文为博主原创文章,转载请附上博文链接!

1、介绍

1.1、介绍Robot

Robot Framework是一个基于关键字驱动的自动化测试框架。通过该框架,测试人员可使用python封装关键字,并在非代码环境下使用关键字构建可被执行的测试用例

Robot Framework官方网站:robotframework.org/

1.2、安装

1.2.1、Robot Framework

Robot Framework支持Python和Jython,本文档针对ubuntu下Python进行讲解

下载地址:pypi.python.org/pypi/ro,下载最新版本安装包如果是windows可直接下载exe安装包,ubuntu可使用tar.gz包进行源码安装,当然windows也支持源码安装

下载完后解压tar包并进入文件夹内执行sudo pythonsetup.py install便可完成安装。安装完成后可在终端执行pybot--version测试是否安装成功

1.2.2、Robot Framework IDE(RIDE)

RIDE是Robot的第三方测试用例编辑器,可编辑用例,编辑关键字等并生成HTML,TXT等格式的文件。同时RIDE可直接可进行测试执行。RIDE是基于wxPython进行开发,所以安装RIDE前需要先行安装wxPython,其官方网站为:wxpython.org/

windwos下可字节下载exe包进行安装

ubuntu下通过终端命令行方式进行安装,方法如下:

1,curl apt.wxwidgets.org/key.a | sudo apt-key add –

2,修改/etc/apt/sources.list文件,追加如下内容

deb apt.wxwidgets.org/ gutsy-wx main

deb-src apt.wxwidgets.org/ gutsy-wx main

3,sudo apt-get update

4,sudo apt-get install python-wxgtk2.8 python-wxtools wx2.8-i18n

5,sudo apt-get install python-wxgtk2.8 python-wxtools wx2.8-i18n libwxgtk2.8-dev libgtk2.0-dev

完成wxPython安装后可进行RIDE安装

下载地址:code.google.com/p/robot

安装方法同robot安装包

1.2.3、官方快速入门和example

下载入门手册:robotframework-quickstart-20090113.zip并解压,进入文件夹后可看见一个quickstart.html,打开该文件可看到官方的快速入门的文档。同时在终端中进入到该文件夹执行命令pybot

quickstart.html便可看到robot执行了一系列测试。这种帮助文档就是example本身的例子并不多见,其原理就是robot可识别html页面中的表格,只要表格的内容和robot执行用例的语法,便可成功执行用例。执行完毕后可看见当前文件夹下生成了report文件,可查看这份报告

2、简单使用Robot Framework

2.1、Hello World

在/home下建立demo用的文件夹例如名为robot_test。在终端中使用命令ride.py打开RIDE编辑器。点击RIDE菜单栏File->Open

Directory选中robot_test文件夹,然后确定。

在robot_test目录下新建一个RobotTest.py然后文件内编写python代码,如下

import os
import sys
class RobotTest:
def first_keyword(self):
fp = open("/tmp/robot_fk", "a")
fp.write("this is the first keyword\r\n")
fp.close()

这样一个TestLib文件就创建完成了,之后在RIDE中创建测试用例:

在RIDE的最上侧菜单栏选择File->New Project后如下

在右侧编辑框拉开Setting选项如下

点击Documentation的大文本编辑框,输入一下文本,可输入中文然后保存,便在可在robot_test目录下生成一个robot_test.html的文件可打开查看样式

首先需要加载刚编辑的RobotTest.py这个库,方法为,点击左侧Robot_Test,在右侧找到Library按钮点击,并点击浏览找到RobotTest.py文件

然后添加用例

在RIDE中右键点击Robot_Test选择New Test Case,输入用例名,比如first case


后点击first case便可看到用例编辑框,在下面的表格中加入第一个关键字first keyword如下

这样一条简单的用例就完成了

用例执行:

点击RIDE最上测得按钮如图

便可看到RIDE开始执行测试用例,执行完毕后如下图

之后进入/tmp目录下看到一个robot_fk文件,可打开看到一串字符this isthe first keyword,这意味着我们的测试成功了。

2.2、Robot工作原理简述

Robot的测试用例和配置使用HTML,TXT等格式文件进行编辑,html是比较常用的一种格式,通过html绘制的表格形式来编辑用例可阅读性较高。

Robot通过识别html表格中的表头来确定该表格的配置是做合使用,例如Settings用来配置资源库,Test Cases用来编辑测试用例,Variables用来配置默认的变量等等。

每个robot工程开始工作时会通过Settings加载相关的资源,通常为TestLib,或者导入其他的配置文件等等,然后找到所有的Test Cases表格并顺序执行每个case。每个测试用例的每个步骤通常都是有一个关键字来执行操作该步骤。Robot会去Settings中指定的library中寻找该关键字,如果找到则执行该关键字所对应的代码,如果在Lib代码中无法找到该关键字,则寻找html的表中表头为Keywords的表格,如果也无法找到则会报错。执行测试用例时每个步骤都执行完且没有报错,则认为该条用例为pass。

3、Robot Framework详解

3.1、Robot的格式

官方文档所描述的配置如下图


而是用RIDE编辑所生成的html文件格式如下:

如果使用其他html编辑器来编辑robot相关配置,建议编辑成官方说明中的标准样式。

3.2、TestLib

TestLib是robot框架关键字部分的核心,它的作用就是用来封装底层关键字。Robot自带了一部分非常常用的TestLib如XML,String等,也有别人开发的第三方的TestLib比如web页面测试相关,Database相关,在robot中只需要正确导入这些库,那么就可以使用这些lib中封装的关键字。而在自动化测试开发中,最重要的过程就是开发出优秀的TestLib,封装出复用性强,清晰明了的关键字。

TestLib编写规则:

1,TestLib是一个python文件,里面写的python代码,所以TestLib通常是.py结尾的。

2,TestLib只且只有一个class,并且该class的名字和TestLib文件名相同。如2.1介绍的RobotTest.py中定义的class的名字也是RobotTest

3,class中所定义的函数便是robot中的底层关键字,所以一些私有函数,不打算作为关键字对外开放的建议将函数名以“__”开头

4,class中函数名定义通常为defabc_def_ghi(self, xxx):这样的格式,单词之间使用下划线分隔,这样的定义的函数名在编辑测试用例时可直接使用关键字abc

def ghi或者Abc Def Ghi也是允许的。所以class中定义函数的时候建议只使用小写字母和下划线的方式,这也符合python的编程规范。

5,其他规范符合python的规范,比如使用os,sys等系统函数该import的就还是要import

符合上述条件的TestLib就可以被robot使用。读者可以自行建立一个TestLib并实现一两个关键字并在RIDE中导入,导入方法参考2.1的例子,导入后如果RIDE中该库颜色显示是红色的,说明很有可能该TestLib有点问题,最直接的问题就是class名和文件名不同导致找不到该Lib,或者头部import某库就出错了。

3.3、Robot的主配置(html)

凡是使用RIDE编辑的html无需太关心格式问题,所以具体跟表格格式相关的问题不再赘述,现介绍一些常用的配置,这些配置通常在RIDE中都能找到,只需要填写内容即可。以下描述还是以2.1节中的example为例

3.3.1、Setting

点击RIDE中的Robot Test看到右侧的Settings打开可看到较多配置

3.3.1.1、Documentation

描述文档,通常用来描述该html的作用,类似帮助文档或者说明


3.3.1.2、Suite Setup

每个Test Suite启动时执行的动作,用法同测试用例中的关键字

3.3.1.3、Suite Teardown

每个Test Suite结束的时候执行的动作,用法同测试用例中的关键字。

3.3.1.4、Test Setup

每个Test Case启动时执行的动作,用法同测试用例中的关键字。如果在某个具体的Test case中指定了Setup则执行case里的setup而不执行setting里的Test

Setup

3.3.1.5、Test Teardown

每个Test Case结束的时候执行的动作,用法同测试用例中的关键字。同样case里的Teardown会将setting里Test

Teardown覆写。

3.3.1.6、Test Timeout

用例超时时间,超过该时间还未执行完毕的用例将被强制退出。单位为秒,也可以写成如下形式,用RIDE输入的时间自动会转成如下形式


3.3.1.7、Tags

Tags作为用例的标记,在robot中是非常常用的。在setting中可配置Force Tags和Default

Tags,也可在用例中配置Tag,Tag的作用在后面描述

3.3.1.8、Library

指定TestLib,系统自带的或者已经安装的TestLib可直接输入名字,自己编写的TestLib就需要加入路径,相对路径绝对路径均可,相对的是该html文件的路径

3.3.1.9、Resource

引入一个资源文件。通常一份比较好的robot用例中包含就是跟该用例相关的关键字,用例和一些基本配置等等,如果需要用到很多公共的模块,公共的关键字,这些公共资源通常会编辑成一个独立的html,这样业务相关的html便可引用

3.3.2 、Testcases

本节开始描述如何编写测试用例。

3.3.2.1、编写方法

上图是官方的帮助文档中描述的Test Case表格的样式。第一列为用例名,第二例开始往后便是用例的动作。如果该用例不止一个动作那么步骤2的动作要写到步骤1动作的下方,即步骤2的第一列要空出,如下例子


两个case均有2个步骤,而robot识别case就通过如果第一列为非空则认为该行是一个新的case。

上的表格缺少表格头,官方的样式表头是第一列是Test Case,第二列是Action,第三列以后的是Argument,事实上不一定所有的case的第二都是Action,有可能的是返回值,有些keyword可能还会返回2个返回值甚至更多,那么在Action之前可能还要占用更多格的空间。RIDE编辑生成的用例表表头只有Test

Cases。所以一般的用例的形式通常为:


3.3.3.2、变量

在编写测试脚本时,每个步骤之间并不是独立的。往往需要前一步骤的输出传入给后一步骤的输入。在代码中可以使用变量来传递这些值,但是如果在表格中编写测试用例,想要传递参数并不是那么容易的事。Robot提供了这样的变量机制,能够在编写用例轻松传递参数。

变量的定义方式为${变量名},通过该方式可定义变量,并给变量赋值,和作为参数传入。举个例子,定义个测试用例名为var case,并且有两个关键字第一个为get

var,有1个返回值,没有输入参数,功能获取var的值。另一个关键字为set var,有1个输入参数,没有返回值,功能设置var值。Var

case的步骤先调用get var获取var然后调用set var并传入该值。如下:



上述用例中定义了${test_var}这个变量用来取值和赋值。如果作为返回值需要复制,就写在关键字操作前并加入=,如果作为参数传值写在关键字操作后,参数需要注意顺序。

学会使用变量,并知道关键字如何使用,基本就可以编写测试用例了,下面介绍Test case中一些常用的配置。在case中的配置需要使用”[ ]”进行标示

3.3.2.3、Documentition

和setting中的一样,用来做一些注释,描述等等,在robot执行时会把这些内容打印出来

3.3.2.4、Setup

当case启动时首先会执行的操作,如果这里定义的Setup则setting中的Test Setup将失效。


3.3.2.5、Teardown

当case结束最后会执行的操作,如果在这里定义了Teardown则setting中的Test Teardown将失效

3.3.2.6、Timeout

用例超时时间。

3.3.2.7、Tags

和setting中tags一致,用于给用例做标记。

3.3.3、Keyword

Robot作为关键字驱动的测试框架,Keyword是其用例层最核心的内容。TestLib中定义的函数,可作为Keyword在用例编辑时使用。同时用户可自定义Keyword,而用户自定义的Keyword通常是底层TestLib中的Keyword的组合和封装。TestLib中的keyword的功能是最为简单单一的。如果测试用例全部使用Testlib中的keyword那极有可能一个用例包含十几个步骤甚至更多。这样的用例逻辑性和可读性是很差的。阅读用例的人可能只关心某一步骤做什么,并不关心是怎么做的,比如数据处理完的下一步骤是验证结果。验证结果可能需要处理数据库,写文件,解析数据结构等等。这些事应该上层写用例的人可能不关心,或者也不想关心。良好的Keyword封装能够让用例编写更轻松,用例质量也越高

3.3.3.1、Keyword编写方法

官方定义的Keyword表格样式如下


和Test case定义方式是一样的。在RIDE中可以如下创建一个Keyword。右键点击Robot Test选择New User Keyword,并取名为my keyword。

这里使用2.1中的例子,在my keyword中调用两次first keyword

保存后的html样式为

然后编辑first case,让它的测试步骤为调用一次my keyword

编辑完成执行first case用例,然后查看/tmp/下的robot_fk文件,每执行一次就会增加两行”this is the first keyword”。

需要注意的是,用户定义的Keyword不能和Testlib中的Keyword重复。由于robot在执行用例时首先TestLib中搜索Keyword,如果用户定义了和TestLib中重复的Keyword,Keyword将无法被执行到。

3.3.3.2、Keyword的输入和输出

如果把一个Keyword当成一个函数,那除了函数处理流程,用户最关心的便是输入和输出。输入便是参数,输出便是Keyword的返回值。下面通过一个例子来说明关键字的输入和输出。首先在2.1中使用的RobotTest.py中增加两个方法,第一个方法名为plus,输入参数2个,功能是返回两个参数的和。另一个方法名为multi,输入参数为3个,功能是返回3个参数的乘积。定义个关键字名字为alg keyword,有3个输入参数,1个返回值,其功能是三个参数两两求和,将3个和求乘积并返回。在RobotTest.py添加如下代码

import os
import sys
class RobotTest:
def first_keyword(self):
fp = open("/tmp/robot_fk", "a")
fp.write("this is the first keyword\r\n")
fp.close()
def plus(self, arg_a, arg_b):
return int(arg_a) + int(arg_b)
def multi(self, arg_a, arg_b, arg_c):
return int(arg_a) * int(arg_b) * int(arg_c)

在RIDE中新建一个keyword命名为alg keyword。使用[Arguments]声明参数如下所示。


在RIDE中编辑参数的方式为

然后在alg keyword编辑测试步骤,如下

保存后html页面为

这里RIDE在生成html页面时为了限制表格列数,将${c}另起一行并在前使用...表示这是与上一行的连接。最后加入[Return]返回${d}的值

在RIDE中在Return Value中添加返回值,完整的keyword编辑如下

完成Keyword后在RIDE中添加一个测试用例命名为second case,调用alg keyword并传入参数1,2,3,并将返回的值进行打印

编辑完后勾选second case并点击按钮执行。


执行结果如下

上面的执行结果显示alg keyword在second case里被正确使用了,也返回了正确的值。通过这种函数可以将单一的关键字封装成高级关键字。Keyword也还有其他常用配置

3.3.3.3、Documentation

和setting中的一样,用来做一些注释,描述等等。


3.3.3.4、Teardown

关键字执行完成时最后会执行的操作。关键字在执行过程中如果遇到错误便会终止,如果后续操作中有资源释放,这些操作就不会执行,可能会导致系统崩溃,内存泄露等,所以可以在Teardown中加入资源释放的操作。

3.3.4、Variable

Robot可以在case之外单独定义一些变量,这些变量可以设置默认值。这个更像是代码中的全局变量。当有一些公共的配置,在每个测试用例都可能用到,比如ip地址,端口号,默认的用户名和密码等等。全局变量的定义时建议全部使用大写字母。在3.3.3的示例中,second

case使用alg keyword使用了参数1,2,3,这里可以使用全局变量来替换。

首先在RIDE中创建全局变量,在RIDE中右键点击Robot Test选择New Scalar,然后给变量命名并设置默认


同样方法再创建两个全局变量,完成后可查看html表格

之后修改second用,将这三个参数代替原本的1,2,3传入到用例中


编辑搜图


请点击输入图片描述


之后点击运行查看结果。

4、Robot高级应用

掌握上述Robot应用便可完成大部分测试用例,另外Robot还提供了一些功能更强大的关键字可让用例编写更灵活

4.1、If分支

Robot支持if判决能让用例执行时根据不同情况执行不同操作。If相关的关键字是”Run Keyword If”,”ELSE IF”,”ELSE”

利用3.3.3中创建的plus关键字,创建一个用例调用plus输入两个参数,如果返回的值小于0,则打印loga,大于等0,小于10打印logb,大于等于10打印logc。首先在RobotTest.py里增加三个函数分别打印loga,logb,logc,调用robot中的logger需要导入robot的api包



然后新建一个用例名为third case之后编辑用例,如下


之后可以尝试修改plus的参数进行测试查看结果。

If有个比较特殊的地方,如果判断一个变量是否为某个字符串,不能直接用${ret}去判断,需要给${ret}加引号如下:



如果不加引号,使用 ${ret} == ‘abc’,假设${ret}的值是qwe,执行时会报错,告诉你qwe这个变量没有定义。这种情况看来,robot将变量的值,当做代码里的变量名处理,所以需要加上引号当字符串处理。这是python的强大之处吧,可以通过字符串转化成一个变量的名字。

4.2、循环

Robot可以使用For循环反复执行一些操作,比较常用的做法是假如某个操作返回列表,而下一步需要分别处理列表里的每个元素,那么需要如下操作:

使用:FOR 和IN便可遍历列表中的元素,不过需要注意的是使用FOR遍历时需要将变量通过@转换成一个列表,否则无法正确遍历。遍历过程中可通过关键字”

Exit For Loop”终止循环。FOR循环也支持多种方式,比如IN RANGE可以设置遍历次数,或者直接在某几项元素中遍历,详细可以看帮助文档for loop一节

robotframework.googlecode.com

4.3、Tags

之前提到过Tags的概念,是用于给用例做标记。用户可以在setting中设置force tags和default tags,也可以在用例中使用[Tags]来给用例标记。Tags最直接的应用就是,可以有选择的执行测试用例。比如有10个用例,其中5个用例使用[Tags]标记为group_a,另外5个标记为group_b。当使用pybot执行用例时假如加上参数--includegroup_a那么robot只会执行有group_a标记的用例,如果使--excludegroup_a那么robot除了group_a的用例不执行,其他都执行,并且一个用例可以加多个tags。在版本测试中,可以通过给用例增加tags,比如某个产品有100个用例,1.0版本需要测试的用例都加上1.0的tags,1.1的版本需要测试用例都加上1.1的tags,这样在执行用例时就可以通过tags来区分版本,很方便。

在setting中可以设置Default Tags和Force Tags。使用这两个配置后可以不用单独给每个用例增加Tags,使用这些配置会让用例增加哪些Tags,请看

robotframework.googlecode.com

上述链接中描述了Force Tags,Default Tags和用例自身的Tags是如何并存的。

4.4、pybot

pybot是robot的执行程序,事实上RIDE执行用例也是利用pybot,所以了解pybot的使用方法很重要。

最简单的用例执行就是pybot xxx,其中xxx就是robot的资源文件。就像1.2.3中的quickstart.html。使用该命令就可执行测试。通过pybot--help可以看到帮助手册。常用的如--include,--exclude,--argumentfile,--listener,--variable,还可以设置日志输出的路径等,等用户需要使用时可查看帮助


编辑于 2020-09-03 09:55


     随着人工智能技术的加持,财务机器人RPA技术被越来越多的行业运用。这些商业化RPA项目价格都不菲,开源项目taskt正好满足我们吃瓜群众的要求。不过这个项目在网上基本找不到资料,于是乎将摸索的经验分享出来抛砖引玉,期待大家一起来提高。(转载请注明出处)

1、软件准备

下载地址,目标码和源码,无需安装,打开压缩包就可以运行了。如需修改代码,编译工具建议选择VS2019社区版,编译能通过,不建议使用vscode。

2、运行程序


3、功能介绍

3.1 File Actions.文件管理功能。

3.2 Options.包括三个功能,变量管理、系统设置、显示搜索框。

先只关注日志窗口自动关闭参数。Options->Settings manager->Automation Engine,不勾选"Automatically Close Debug Window"。打开这个参数,错误信息窗口关闭的太快,不好定位错误。

3.3 Scripts Actions.

这儿包含最重要的几个功能。record(录制系统操作)、schedule(调度)、run(运行)。系统录制,基于窗口在屏幕上位置,记忆鼠标和键盘操作。操作简单,但容错性不好。建议采用命令搞不定的时候使用。

4、开始第一个应用。

目标:自动登录邮箱。主要用到Web Browser Command。这些命令是基于Chrome浏览器开发的,taskt重点支持Chrome、IE。

4.1 打开浏览器,Web Browser Commands.->Create Browser。

选择Chrome浏览器。 第一个输入框,实例名称,可以不改。

4.2 选择浏览地址。

Web Browser Commands.-> Navigate to URL. 在第二个框中填入URL。这儿以登录126邮箱为例。

4.3  切换frame。

4.4  等待组件渲染完毕。

4.5  找到用户名输入框,填入用户名。

Web Browser Commands.-> Element Action。注意几点:Element既可以通过Xpath定位,可以通过Name、ID、CSS等方式定位,建议定位优先级ID>Name>Xpath。

4.6  设置密码,方法同上。

4.7 定位登陆按钮,双击。

4.7  保存&运行,大功告成。

下一章,讲变量、循环。



作者:zhhabc
链接:https://www.jianshu.com/p/ec678c8f2df6
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


概念

RobotFramework是什么?


Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发(ATDD)。


特性

1.测试用例使用文本文件(TXT或者TSV文件)保存,使用制表符分隔数据。可以方便的使用任何文本编辑器,或者EXCEL编辑测试用例。也可以使用HTML格式创建用例。


2.测试用例中支持变量使用,可以使用IF语句和FOR循环语句。


3.可以利用“标签”功能对测试用例进行分类和有选择执行。


4.支持关键字驱动、数据驱动和行为驱动。


5.利用已有的关键字,测试人员可以创建自己需要的关键字,形成更高级别的行为。


6.测试执行报告和日志是HTML格式,容易阅读。


7.Robot Framework并不是一款像QTP一样的自动化测试工具。它是一个自动化测试框架,或者说是一个自动化测试平台。


8.提供了测试执行事件的监听接口,并且可以自定义接口中的脚本。例如,某个用例执行前,“start_test”接口中的脚本就会被执行;用例执行结束后,“end_test”接口中的脚本就会被执行。而测试人员可以自定义“start_test”、“end_test”这两个接口的脚本。


9.提供了命令行接口和XML格式的输出。可以与版本管理工具结合,进行持续集成。


10.Robot Framework是通过测试库识别被测对象、操纵被测对象,有很多自带的或者第三方的开源测试库。例如,使用“selenium2Library”库测试web客户端。此外还可以测试java客户端、Win32客户端、SSH协议的字符终端等。


11.测试人员可以使用Python和java创建自己需要的测试库。


12.提供了远程测试执行接口,可以进行分布式测试执行。


以上内容来源百度百科


RF环境安装

环境的安装需要版本匹配,我现在电脑上配置的版本亲测有效。


1、安装python3.7.6环境并配置环境变量;


2、使用管理员身份打开dos窗口:


安装robotframework:pip install robotframework==4.1


卸载为pip uninstall robotframework


3、在dos窗口中安装RIDE工具,RIDE是robotframework的开发工具:


安装RIDE:pip install robotframework-ride==1.7.4.1


卸载:pip uninstall robotframework-ride


安装时会弹出如下的对话框,是否创建桌面快捷方式?,点击“是”。




4、安装wxPython


Wxpython 是python 非常有名的一个GUI库,因为RIDE 是基于这个库开发的,所以这个必须安装。


pip install wxPython==4.0.4


5、Selenium2Library安装


RF-seleniumlibrary 可以看做RF版的selenium 库,selenium (webdriver)可以认为是一套基于web的规范(API),所以,RF 、appium 等测试工具都可以基于这套API进行页面的定位与操作。


pip install robotframework-selenium2library


6、双击图标打开,或者在dos窗口输入ride.py打开,打开之后如下图所示。




安装过程中遇到的问题


遇到闪退或者启动报错如下所示:




将..python37\Lib\site-packages\robotide\application的目录下application.py文件中的self._initial_locale = wx.Locale(wx.LANGUAGE_ARABIC)改成self._initial_locale = wx.Locale(wx.LANGUAGE_ENGLISH)




如遇其他问题,请求助热心网友们,大部分问题都可以解决。


RF的使用

1、新建项目


点击【File】→【New Project】,在弹出框中填写项目名称、路径、类型(文件或者文件夹),这里新建一个文件夹。






2、创建测试套件


在文件夹上点击右键,选择【New Suite】,在弹出框中填写测试套件的名称,类型选择File。






3、创建测试用例


在测试套件上点击右键,选择【New Test Case】,在弹出框中填写测试用例的名称。






4、创建资源文件


在文件夹上点击右键,选择【New Resource】,在弹出框中填写名称,并选择格式为TXT。一般为保存业务关键字资源,是自定义关键字的载体,在资源文件下可以创建用户自定义关键字。








5、页面操作介绍


【1】 测试套件的Edit页签页面,如下图所示




1、Settings设置




2、Import:导入外部文件


Library:导入外部类库,如果是黑色表示成功,红色表示失败。


Resource:导入资源文件,比如可以导入业务关键字。


3、定义内部变量


添加变量、添加list集合,添加一个字典,这一块相对用的不多,较常用的还是导入外部文件的Library和Resource功能。


4、元数据


【2】测试用例页面






RF的常用类库

1、标准库:不需要安装,直接用,RF自带。


Buitini(测试库)


Collections(集合库)


DateTime(时间库)


ScreenShot(截屏库)


标准库的位置:D:\software\python37\Lib\site-packages\robot\libraries


2、扩展库:需要通过pip安装库


Web自动化测试:SeleniumLibrary,Selenium2Library,Selenium2Library for java等。


API接口自动化:RequestsLibrary


APP自动化测试:AppiumLibrary


安装方式:


pip install robotframework-seleniumlibrary


pip install robotframework-requests


pip install robotframework-appiumlibrary


扩展库的位置:D:\software\python37\Lib\site-packages\


注意:在导包时一定要和文件夹的名字一致,包括大小写。


RF的常用关键字的使用

快捷键:


1、搜索关键字:F5


2、自动补全关键字:ctrl+shift+空格


当我们遇到不熟悉的关键字时,可以在如下所示的页面中查找其使用方法。




小试牛刀






Comment 1.打印


Log 这是一条打印语句


Comment 2.设置变量


${a} Set Variable 100


Log ${a}


Comment 3.获取系统时间


${times} Get Time


Log ${times}


Comment 4.睡眠时间,强制等待


sleep 3


Comment 5.字符串的拼接


${str} Catenate oracle mysql sqlserver


Log ${str}


Comment 6.创建列表


${list1} Create List 功能测试 自动化测试 性能测试


Log ${list1}


@{list2} Create List 功能测试 自动化测试 性能测试


Log Many @{list2}


Comment 7.创建字典


${dic} Create Dictionary name=张三 age=18


Log ${dic}


Comment 7.1 获得字典的键


${keys} Get Dictionary Keys ${dic}


Log ${keys}


Comment 7.2 获得字典的值


${values} Get Dictionary Values ${dic}


Log ${values}


Comment 7.3 通过键取值


${key_value} Get From Dictionary ${dic} name


Log ${key_value}


Comment 8.执行python里面的方法


${random_number} Evaluate random.randint(1,101) modules=random


Log ${random_number}


${times} Evaluate time.time() modules=time


Log ${times}


Comment 9.执行python自定义的方法


Import Library E:/pythonProject/test.py


${a} Evaluate int(10)


${b} Evaluate int(20)


${return_result} sum ${a} ${b}


Log ${return_result}


Comment 10. 流程控制IF


${age} Set Variable 22


Run Keyword If ${age}>30 Log 年龄太大,不合适 ELSE IF 18<=${age}<=30 Log 年龄正合适 ELSE Log 未成年


Comment 11. 流程控制FOR


FOR ${a} IN oracle mysql sqlserver


Log ${a}


END


Comment 流程控制FOR的另一种形态


@{list3} Create List oracle mysql sqlserver


FOR ${a} IN @{list3}


Log ${a}


END


Comment 流程控制FOR循环范围内的数据


FOR ${a} IN RANGE 1 11


Run Keyword If ${a}==5 Exit For Loop


Log ${a}


END




以上代码的运行结果:




Starting test: TestDemo.RF测试1.TestSuit1.TestCase1


20210831 08:28:34.827 : INFO : 这是一条打印语句


20210831 08:28:34.828 : INFO : ${a} = 100


20210831 08:28:34.828 : INFO : 100


20210831 08:28:34.829 : INFO : ${times} = 2021-08-31 08:28:34


20210831 08:28:34.830 : INFO : 2021-08-31 08:28:34


20210831 08:28:37.837 : INFO : Slept 3 seconds


20210831 08:28:37.839 : INFO : ${str} = oracle mysql sqlserver


20210831 08:28:37.839 : INFO : oracle mysql sqlserver


20210831 08:28:37.840 : INFO : ${list1} = ['功能测试', '自动化测试', '性能测试']


20210831 08:28:37.840 : INFO : ['功能测试', '自动化测试', '性能测试']


20210831 08:28:37.841 : INFO : @{list2} = [ 功能测试 | 自动化测试 | 性能测试 ]


20210831 08:28:37.841 : INFO : 功能测试


20210831 08:28:37.841 : INFO : 自动化测试


20210831 08:28:37.841 : INFO : 性能测试


20210831 08:28:37.842 : INFO : ${dic} = {'name': '张三', 'age': '18'}


20210831 08:28:37.843 : INFO : {'name': '张三', 'age': '18'}


20210831 08:28:37.844 : INFO : ${keys} = ['age', 'name']


20210831 08:28:37.844 : INFO : ['age', 'name']


20210831 08:28:37.845 : INFO : ${values} = ['18', '张三']


20210831 08:28:37.846 : INFO : ['18', '张三']


20210831 08:28:37.847 : INFO : ${key_value} = 张三


20210831 08:28:37.847 : INFO : 张三


20210831 08:28:37.848 : INFO : ${random_number} = 101


20210831 08:28:37.848 : INFO : 101


20210831 08:28:37.849 : INFO : ${times} = 1630369717.848543


20210831 08:28:37.849 : INFO : 1630369717.848543


20210831 08:28:37.859 : INFO : ${a} = 10


20210831 08:28:37.860 : INFO : ${b} = 20


20210831 08:28:37.860 : INFO : ${return_result} = 30


20210831 08:28:37.861 : INFO : 30


20210831 08:28:37.861 : INFO : ${age} = 22


20210831 08:28:37.862 : INFO : 年龄正合适


20210831 08:28:37.863 : INFO : oracle


20210831 08:28:37.864 : INFO : mysql


20210831 08:28:37.865 : INFO : sqlserver


20210831 08:28:37.866 : INFO : @{list3} = [ oracle | mysql | sqlserver ]


20210831 08:28:37.867 : INFO : oracle


20210831 08:28:37.868 : INFO : mysql


20210831 08:28:37.869 : INFO : sqlserver


20210831 08:28:37.871 : INFO : 1


20210831 08:28:37.872 : INFO : 2


20210831 08:28:37.873 : INFO : 3


20210831 08:28:37.875 : INFO : 4


20210831 08:28:37.876 : INFO : Exiting for loop altogether.


Ending test: TestDemo.RF测试1.TestSuit1.TestCase1




准备UI自动化测试的环境

1、通过 pip安装扩展库:pip install robotframework-seleniumlibrary;


2、下载谷歌浏览器;


3、下载谷歌浏览器的驱动(注意:谷歌浏览器的驱动必须和谷歌浏览器兼容),然后将chromedriver.exe放到python目录下;


4、在RF的测试套件里面导入SeleniumLibrary;


浏览器操作的关键字





Comment 打开浏览器


Open Browser https://www.baidu.com chrome


Comment 隐式等待


Set Browser Implicit Wait 5


sleep 2


Comment 浏览器放大


Maximize Browser Window


sleep 2


Comment 设置浏览器的尺寸


Set Window Size 1024 768


sleep 2


${width} ${height} Get Window Size


sleep 2


Comment 返回上一步


Go Back


sleep 2


Comment 直接跳转页面


Go To https://www.baidu.com


Comment 刷新页面


Reload Page


sleep 2


Comment 获取title


${title} Get Title


Log ${title}


sleep 2


Comment 获取路径


${loc} Get Location


Log ${loc}


sleep 2


Comment 关闭浏览器


Close Browser




元素定位

元素定位的八种方式:id,name,link_text,partial_link_text,xpath,css,class_name,tag_name


前提:元素必须唯一


以下是通过id、name、link定位的几种简单方式




除了以上的定位方式,还有两个比较强大的定位方式:xpath与css


我们现在要定位如下的文本框:




xpath:(以下定位的元素都为百度首页的部分元素)


1.通过绝对路径定位,这种方式几乎不用。


2.通过相对路径定位://form/span/input




3.通过元素属性定位://input[@autocomplete="off"]或者//input[@autocomplete="off" and @class="s_ipt"]




4.通过部分属性定位://input[starts-with(@autocomplete,"of")]或者//input[contains(@autocomplete,"of")]


5.通过文本定位//a[text()="新闻"]


css:(以下定位的元素都为百度首页的部分元素)


1.通过绝对路径定位,这种方式几乎不用。


2.通过ID或者Class定位:#ID或者.class


3.通过元素属性定位:


一个属性定位 :input[autocomplete="off"]


两个属性同时定位:input[autocomplete="off"][class="s_ipt"]


4.通过部分属性定位:


以什么开头:input[autocomplete^="of")]


以什么结尾:input[autocomplete$="ff")]


包含:input[autocomplete*="of")]


5.通过子元素定位div#s-top-left a:nth-child(3),id为s-top-left下的第三个a标签。




如何处理frame框架?


我们在实际项目中,会发现很多情况下都存在frame框架,而处在frame框架中的元素,不能直接定位,需要先跳进当前的frame中,再进行定位。




跳进上图中的frame框架中:Select Frame menu-frame




如果要定位不是该frame中的元素,则需要先跳出当前frame,再进行操作:Unselect Frame,如下图所示:




下拉框列表的定位方式:




下面以Select From List By Value为例:




定位一组相同元素中的其中一个:






处理警告框


弹框一般有三种:alert,confirm,prompt




处理上图中的alert弹框,关键词为Handle Alert,如果点击确定操作,不用传任何参数,如果点击取消按钮,则传值为:DISMISS.


项目的三层架构

1、三层架构指的是什么?


(1)页面元素层


(2)业务逻辑层


(3)测试用例层


业务逻辑层调用页面元素层,测试用例层调用业务逻辑层。


2、为什么要分层,意义在哪里?


实现页面元素,公共方法,公共数据,业务逻辑,测试用例集中式管理。


增加脚本的重复利用率。


增加脚本的可维护性。


RF非GUI方式(命令行)运行与Jenkins集成

命令:pybot -d 测试报告的路径 测试用例的路径


Jenkins的基本操作


1、安装Jenkins的环境


(1)安装jdk环境;


(2)进入Jenkins官网,下载安装文件,双击进行安装,按照步骤进行即可;




2、Jenkins的配置


(1)在插件管理中搜索Robot Framework,进行安装。




(2)创建一个自由风格的项目




(3)设置定时执行任务




(4)创建一个Windows批处理命令




(5)添加Execute Groovy script System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")




(6)增加构建后操作步骤






后记

关于RobotFramework的基础功能就先介绍到这里,后续再为大家补充。


总结:

感谢每一个认真阅读我文章的人!!!


作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。




软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。




 


          视频文档获取方式:

这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

————————————————


                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

                        

原文链接:https://blog.csdn.net/2301_81967703/article/details/140576872


在许多组织中,自动化和人工智能/机器学习的第一步是采用机器人过程自动化 (RPA) 技术。

许多企业正在使用 RPA 来提高成本和 IT 流程的效率。在许多情况下,减少错误、时间、成本和冗余操作可以改善客户和其他利益相关者的工作流程。

RPA 的核心是帮助组织自动执行大量完成的已定义的、多步骤的手动任务。RPA 通过创建复制人类行为以与现有应用程序界面交互的软件机器人来做到这一点。

RPA 有可能将成本降低 30% 到 50%。这是一项明智的投资,可以显着提高组织的底线。它非常灵活,可以处理广泛的任务,包括进程复制和网络抓取。

RPA 可以帮助预测错误并减少或消除整个流程。它还通过使用智能自动化帮助您在竞争中保持领先。它可以通过创建个性化服务来改善数字客户体验。

开始使用 RPA 的一种方法是使用开源工具,这些工具没有预付费用。以下是您的第一个 RPA 计划要考虑的五个选项,每个选项的优缺点,以及有关如何为您的公司选择正确工具的建议。

为什么要开源?

在埃森哲,我的团队主要使用商业工具实施 RPA,但我们也使用开源工具,并且可能会为给定的客户使用组合。也就是说,开源选项是一种轻松涉足 RPA 领域的方法,无需对软件进行大量投资。

与商业 RPA 工具相比,开源降低了您的软件许可成本。另一方面,它可能需要额外的实施费用和准备时间,并且您需要依赖开源社区的支持和更新。(有关一些潜在缺点的更多详细信息,请参阅“使用 AIOps,在开源之前三思而后行”中的讨论。)

是的,商业和开源 RPA 工具之间存在权衡——我会在一分钟内讨论这些。但是,当用作 RPA 实施的操作组件时,开源工具可以提高企业项目的整体投资回报率。这是我们的竞争者名单。

1.任务 (Taskt)

Taskt 以前称为 sharpRPA,是一个免费的 C# 程序,使用 .NET 框架构建,具有易于使用的拖放界面,让您无需任何编码即可自动化流程。

我的团队经常与只有 C# 开发技能的客户合作,Taskt 是 C# 为中心的团队用来开始 RPA 的好工具。

您可以通过 GitHub 上的示例来探索 Taskt,您还可以在其中找到设置任务自动化流程的分步指南。我们的许多开发人员都有强大的 Microsoft/Azure 背景,并发现使用 C# 使用 Taskt 创建脚本要容易得多。该工具具有 Microsoft 的影响力,这将使喜欢 Visual Studio 或 Azure 开发环境的团队受益。

底线:如果您的团队习惯于开发 Microsoft C# 解决方案,Taskt 是一个很好的工具。

2.机器人框架(Robot Framework)

Robot Framework 庞大的开源开发者社区使其成为该列表中最先进、最稳定的开源 RPA 解决方案。使用 Robot Framework 有几个主要好处:

  • 供应商联盟支持开源社区更新核心产品。

  • Robot Framework 在多个平台上运行,使开发团队更容易采用和实施它。

  • 核心框架可以通过扩展的插件库进行扩展。

  • 复制自动化的默认机器人可以根据企业的需求进行扩展。

虽然我的团队经常使用 Robot Framework,但该工具很复杂,如果您正在寻找第一个 RPA 解决方案的原型或者如果您是 RPA 新手,那么它可能不是最佳选择。也就是说,经验丰富的 RPA 开发人员将欣赏您如何使用 Robot Framework 来管理复杂的 RPA 任务。

3.标签用户界面(TagUI)

TagUI 是一种多层且复杂的工具,具有丰富的脚本语言,可让您完成复杂的 RPA 指令。您使用 TagUI 的脚本语言开发每组指令,称为“流程”,并将其保存在扩展名为“.tag”的文本文件中。然后,您可以使用终端窗口/命令提示符执行每个流程。

每个流脚本可以识别以下内容:

  • 访问网站或打开应用程序的说明

  • 在哪里点击屏幕

  • 要键入的内容

  • IF 和 LOOP 指令

TagUI 脚本语言的丰富性使其成为我们团队的最爱。我们可以快速启动并运行该工具,脚本可以作为 .tag 文件共享以创建库,并且维护脚本库很容易。TagUI 适用于实施 RPA 的中级或高级团队。

4. UI.Vision(坎图)

UI.Vision(以前称为 Kantu),既可以作为桌面上的独立客户端运行,也可以作为 Web 浏览器中的插件运行。它不需要您学习如何编写脚本,因为它是由点击式界面驱动的。如果您是 RPA 新手并且 IT 资源有限,那么这使得 UI.Vision 成为一个很好的工具。

也就是说,我的团队很少使用 UI.Vision。我们使用它在现场演示中展示 RPA 的功能,但该工具缺乏此列表中其他工具支持的更复杂场景所需的功能——这是您通过点击式界面获得的权衡。更复杂的控件需要 UI.Vision 不支持的脚本和终端窗口访问。

5.开放RPA

虽然 Open RPA 提供了许多自定义和自动化功能,但其主要区别在于其架构。简而言之,Open RPA 是一个成熟的工具,可以为各种规模的公司提供支持和扩展。它支持上面列出的其他工具列出的许多功能,包括:

  • 远程管理

  • 远程处理状态

  • 与领先的云提供商集成

  • 调度

  • 分析仪表板

由于开源社区中有许多积极的项目贡献者,因此此处列出了 Open RPA;您可以期望每周看到几次更新。我的团队在使用 Open RPA 方面的接触有限,因此我们无法保证,但我将其列为您可能想要尝试的替代解决方案。

开源与商业 RPA 工具

对于许多中小型公司而言,前期许可成本是启动 RPA 计划的障碍。在这些情况下,开源可能是您的最佳选择。在较大的公司中,开源工具可能有助于填补商业产品可能无法填补的空白,例如自动化 Python

RPA 是一种新兴技术,在许多组织中仍处于早期采用阶段。这就是为什么开源和商业工具可以相互补充的原因之一。

这里没有万能的解决方案,因此您应该关注 RPA 提供的好处和价值,以及在您的预算下可以使用哪些工具来释放该价值。随着您的计划成熟,您的工具箱可能会同时包含商业和开源元素。但是开源是一个很好的入门方式。

简单开始

开源 RPA 工具有一个显着的好处:由于没有许可费用,您可以使用该软件而无需通过请求预算的过程。请注意,许可通常只是运行 RPA 工具所需总成本的一小部分。

事实上,开源工具通常部署起来成本更高,并且会增加风险。

此外,要扩展 RPA,您需要熟练编写脚本和管理机器人运行环境的人员。随着公司开始了解如何自动化其他业务领域和需求,对熟练 RPA 工程师的需求变得越来越重要RPA 增长。

在制定 RPA 策略时,首先选择一个简单的开源工具来快速说明 RPA 的价值。然后,当您从原型转向规模化部署时,您将需要更复杂的东西。

更重要的是,没有一种单一的 RPA 工具可以满足所有需求,因此最好将商业和开源解决方案与一个熟练使用这些工具的团队相结合,以满足您组织的所有需求。


博主介绍: 大家好,我是Yuperman,互联网宇宙厂经验,17年医疗健康行业的码拉松奔跑者,曾担任技术专家、架构师、研发总监负责和主导多个应用架构。

技术范围: 目前专注java体系,以及golang、.Net、软件架构、DDD、微服务、redis、nginx、tomcat、mysql、oracle等

业务范围: 从数字医院到区域医疗,从院内业务系统到互联网医院及健康服务,从公立医院到私立医院都有一些经历及理解

*** 为大家分享一些技术积累,欢迎交流合作 持续关注Yuperman ***


RPA框架系列之Taskt


研究了一下RPA以及基于业务的应用,对RPA进行一些记录,其中taskt的信息比较少,再次整理及分享。【Taskt下载地址在文末】


随着RPA技术的不断普及和应用场景的拓展,开源RPA框架将扮演越来越重要的角色。它们不仅能够帮助企业降低运营成本、提高工作效率,还能够通过融合AI元素实现更高层次的智能自动化。未来,随着技术的不断进步和应用的不断深化,Taskt等开源RPA框架有望在更多行业中得到广泛应用和推广。


目录


5个最佳开源RPA框架


Taskt 介绍


taskt的优缺点


taskt功能(部分)


系统要求


Taskt 下载


 

5个最佳开源RPA框架

当前RPA的开源市场中,备受推荐的框架有:Robot Framework、Taskt、UI.Vision、OpenRPA和TagUI。 以下是这5个开源框架在低代码、可读性、跨平台、开发语言、以及开源协议等方面的对比。




 


Taskt 介绍

taskt使用的是Apache 2.0协议,对于个人和商业用途都是免费的




taskt的优缺点

taskt优点


免费使用(与公司规模无关)

编辑画面不太重

根据设备的不同,大多数事情可以自动化

创建的数据易于处理,因为它采用XML格式(也许)

taskt不足及缺点


国内相关资料和文章很少

几乎没有手册和说明(如果您会读英语,则可以阅读说明)

屏幕显示为英文(从3.2.0.0版开始)

这是一个非常类似于编程的屏幕,很难从视觉上理解

taskt功能(部分)

taskt(以前称为 SharpRPA)是第一个真正免费、易于使用的开源流程自动化客户端,基于 C# .NET Framework 构建。taskt 允许您构建和设计流程自动化,而无需编写应用程序代码。


1、自动化Excel务:可以使用 Taskt 创建机器人来处理 Excel 文件,例如自动导入导出数据、执行计算和生成报表等任务。


2、从网站获取信息并另存为文件:Taskt 可以模拟浏览器操作,从网站中抓取信息并将其保存为文件,比如从网页中提取数据或者下载文件。


3、打开许多文件并执行相同的操作:可以编写机器人脚本,使其能够自动打开多个文件,并对这些文件执行相同的操作,比如批量处理文档或图片。


4、自动化键盘和鼠标操作:Taskt 支持自动化键盘输入和鼠标操作,可以模拟用户在计算机上的各种操作,比如自动化软件的操作流程或者填写表单等。




系统要求

taskt 可以在 Windows 7 或更高版本的操作系统上运行,但是需要确保已经安装了.NET Framework 4.8 或更高版本,否则无法正常运行。.NET Framework 是 Microsoft 提供的一个用于构建和运行应用程序的软件框架,taskt 使用了其中的功能来实现自动化任务。因此,在安装和运行 taskt 之前,请确保系统已经安装了.NET Framework 4.8 或更高版本,以确保其正常运行。


最低配置要求


Windows 7/8.1/10/服务器 2012/服务器 2016

1GB 内存

200MB磁盘空间

1 个虚拟CPU

.NET框架4.8

推荐配置要求


Windows 10/服务器 2012/服务器 2016/服务器 2019

4GB 内存

1GB磁盘空间

2个CPU

.NET框架4.8

Taskt 下载

EXE 可运行程序下载: https://download.csdn.net/download/charry0110/89784894


源码版下载:taskt: taskt(原名sharpRPA)是基于.NET Framework的C#开发的一款免费、易于使用的开放源代码自动化客户端。它的设计理念就是让用户能够构建和设计流程自动化,而不需要编写一行应用代码。借助taskt,你可以轻松实现繁杂任务的自动化,并打造出自己的数字工作团队。

————————————————


                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

                        

原文链接:https://blog.csdn.net/charry0110/article/details/142444808