当前位置: 首页> 技术文章> robotframework自定义测试库

robotframework自定义测试库

项目自动化原定用python做,但是其他测试都只会RF,无奈改成RF,但是很多功能python中好实现到了RF只能通过自定库实现,通过几天研究,终于把Selenium2Library(一下简称S2L)摸透,可以随意结合selenium及其他库定制关键字。

首先我们看看S2L的结构:

upfile1575557406205.png

非常简洁,就一个初始化文件__init__(),内容只有一个继承SL的类,一个获取关键字描述文档的方法:

upfile1575557426042.png

这说明,S2L所做的不过是对SL的继续继承,最终的源头方法都有SL提供,因此,我们只需要继承SL就可以实现关键字的定制。

自定义关键字已经是老生常谈了,主要步骤:在set-packages下创建目录NewLibrary,目录下有两个文件,一个是__init__.py继承另一个文件functions.py中的new_keywords具体内容如下:

__init__.py:

upfile1575557471655.png

functions.py:

upfile1575557488304.png

此时在RF中已经可以看到自定义库的导入是成功的,但是关键字并没有暴露出来,此处纠结一天,只怪源码看的不仔细,后来细看各个关键字文件发现:

upfile1575557505086.png

SL中的关键字都使用了装饰器keyword,这个装饰器可以将SL中的方法暴露为关键字给RF。因此我们往functions.py中添加两行就能让关键字暴露于RF中了:

upfile1575557530959.png

一个自定义库---SL库的扩展库编写完成,后续可以根据需要进行自定义库的扩充。

后续为自定义库的编写总结:

继承SL后,self究竟是什么?

:经过试验,发现self就是当前浏览器对象,因此后续的方法可以直接用self代替webdriver而执行webdriver的方法。

S2L的诸多文件中分为以下几部分:

1base目录下的底层驱动:包括

context文件下的ContextWare上下文管理器;librarycompont文件下下的LibraryCompont库元件(主要是一些日志的打印实现);robotlibcore文件下的元件收集驱动。

2keywords目录下的关键字集合;

3locator目录下的元素定位器与窗口管理器

4utils目录下的事件管理器、库监听等

5SL库驱动(包括关键字收集,当前浏览器确定等)

6、错误定义。

 

 

最近试验了下,依旧继承SeleniumLibrary通过定义GET_BROWSER()方法实例化一个浏览器

对象来保持这个浏览器对象,

 

后续的自定义方法调用可以直接取GET_BROWSER()方法返回的浏览器对象进行操作,而RF中的关键字能自动获取当前的浏览器对象。


上一篇: 图片验证码识别

下一篇: 软件测试之手工测试人员如何转测试开发?

QQ技术交流群

多测师官方学习交流
556733550

加入群聊