我有两个libs,都使用open()方法:
Library Menu.py
Library Submenu.py
*** Test Cases ***
MenuOpen
open Menu
SubmenuOpen
open Submenu
*** Keywords ***
open
[Arguments] ${library_object}
${library_object}.open()
(这是一个简化的例子,这就是为什么关键字只包含一行,但它显示了我的问题)。如何创建和传递库对象,使这段代码真正起作用?
答案 0 :(得分:0)
如果我的问题是对的。 导入模块时,您可以执行基本操作:
import myModule1, my Module2
然后你的菜单实际上会被称为myModule1.Menu和myModule2.Menu
或者您可以导入,或者甚至可以从/ import / as导入,例如:
from myModule1 import Menu as Menu
from myModule2 import Menu as SubMenu
答案 1 :(得分:0)
要获取库实例,您可以使用Get library instance中的BuiltIn library关键字。通过该实例,您可以使用Call method关键字来调用该库中的关键字:
angular.module('app', [])
.directive('myTag', function() {
return {
transclude: true,
template: '<a href="#" ng-transclude></a>'
}
})
.directive('myList', ['$compile', function($compile) {
return {
template: '<ul></ul>',
link: function(scope, element) {
scope.$watchCollection('data', function(data) {
if(data && data.length) {
element.empty();
data.forEach(function(item) {
element.append(
$compile( // <= in order to make myTag directive work, you need to compile text
angular.element('<p>'+item+'</p>').contents() // convert text to list of DOM elements wrapped by jqLite/jQuery
)(scope)
);
});
}
}
);
}
}
}])
.run(['$http', '$rootScope', function($http, $rootScope) {
$rootScope.data = [];
$http.get('data.txt').then(function(xhr) {
$rootScope.data.push(xhr.data);
});
}]);
您也可以传入名称,并使用Run关键字:
open
[Arguments] ${library_object}
${lib}= Get library instance ${library_object}
call method ${lib} open
如果你想避免这种诡计,你可以通过完全限定它来直接调用你想要的任何一个库的*** Keywords ***
open
[Arguments] ${library_object}
run keyword ${library_object}.open
关键字:
open