最近在看RF代码,接触到自定义的python库的用法,记录于此:
>>>>>>>>>>>>>>>>>>>>>>
1. 网上常用的方法
2. 直接在RF中引用python文件
3. 代码中使用import library关键字引用python文件
4. 结果展示
5. RF 与 Selenium交互
>>>>>>>>>>>>>>>>>>>>>>
1. 网上常用的方法
1)在python安装目录下的Lib\site-packages新建目录< mylib >作为自定义python库的目录
2)在<mylib>文件夹下创建python文件<myclass.py>,定义 <myclass> 类,并定义相应的方法
import time
class MyClass(object):
def __init__(self):
pass
def au_get_time(self):
return time.localtime()
3)在<mylib>文件夹下创建python文件<__init__.py>,用来作为RF的引用入口
from myclass import MyClass
class mylib(MyClass):
ROBOT_LIBRARY_SCOPE = 'GLOBAL'
4)在RF中引用
* 使用Eclipse时,配置red.xml,这样就可以像BIF一样进行使用
<referencedLibrary type="PYTHON" name="mylib" path="c:/Python27/lib/mylib"/>
* 直接在library中引用,使用 绝对路径 或 相对路径
Library <path>/mylib
5)直接在代码中调用 au_get_time方法
${t} au_get_time
log ${t}
2. 直接在RF中引用python文件
1)创建自定义库的python文件 <myfile>
2)在<myfile>中定义方法所要用的方法 au_get_time
import time
def au_get_time():
return time.localtime()
3)引用,参考 1, 4)
4)直接在代码中调用 au_get_time方法,参考 1, 5)
3. 代码中使用import library关键字引用python文件
1)创建自定义库的python文件 <myfile>
2)在<myfile>中定义方法所要用的方法 au_get_time
3)引用
Import Library <path>/myfile.py
4)直接在代码中调用 au_get_time,参考 1, 5)
4. 结果展示
INFO : ${t} = time.struct_time(tm_year=2018, tm_mon=8, tm_mday=19, tm_hour=16, tm_min=15, tm_sec=15, tm_wday=6, tm_yday=231, tm_isdst=0)
INFO : time.struct_time(tm_year=2018, tm_mon=8, tm_mday=19, tm_hour=16, tm_min=15, tm_sec=15, tm_wday=6, tm_yday=231, tm_isdst=0)
5. RF 与 Selenium交互
RF可以直接引用Selenium2Library使用selenium所提供的库,但一些common方法,如actionchain无法直接使用,因此就需要扩展自定义类库,以实现对Selenium所有方法的引用
1)获取当前Selenium对像实例
s2l = BuiltIn().get_library_instance('Selenium2Library')
2)获取当前Browser对像,以实例化selenium方法对像
s2l._current_browser()
3)通过实例化的selenium方法对像调用对像所拥有的方法