在robotframework中找不到自定义关键字

时间:2019-05-14 14:59:20

标签: python selenium webdriver automated-tests robotframework

我正在尝试将用python编写的自定义关键字导入robotframework。

我遇到以下情况:

具有以下内容的file.robot:

Library  SeleniumLibrary
Library    ../../../python_scripts/mapActions.py

Drag and drop     //*[@id="map"]  -50     -50
mapActions.Drag and drop   //*[@id="map"]  -50     -50
mapActions.MapActions.Drag and drop     //*[@id="map"]  -50     -50

和mapActions.py:

from SeleniumLibrary import SeleniumLibrary
from SeleniumLibrary.base import keyword

class MapActions(SeleniumLibrary):
   @keyword
   def drag_and_drop_on_element_with_offset(self, locator, x, y):
       map_locator = self.find_element_by_xpath(locator)

运行file.robot后,输出:

  

1)找不到名称为“拖放带有偏移量的元素”的关键字。

     

2)没有名称为'mapActions.drag的关键字并拖放到具有   抵消”。

     

3)没有名称为'mapActions.MapActions.d的关键字   找到具有偏移量的元素。

使用Python 3.7.2 RobotFramework 3.1.1

尝试这三个选项导致不确定应该考虑哪个选项...

我做错了什么?为什么file.robot无法运行“拖放”功能?

1 个答案:

答案 0 :(得分:0)

确切的函数名称只能用作关键字。

在.py文件中 从SeleniumLibrary导入SeleniumLibrary 从SeleniumLibrary.base导入关键字

MapActions(SeleniumLibrary)类:    @关键词    def drag_and_drop_on_element_with_offset(self,locator,x,y):        map_locator = self.find_element_by_xpath(locator)

在Robot Framework文件中 库<>

drag_and_drop_on_element_with_offset // * [@@ id =“ map”] -50 -50

在上面的示例中,可以将与函数名称完全匹配的名称用作关键字名称。

以下是经过测试的有效示例 *设置* 库../../UUID.py

*测试用例* 创建新的许可证模型     $ {uuid} =生成UUID

Python函数 def生成UUID(自己):         “”“生成uuid”“”         返回uuid.uuid4()