我是Protractor的新手,我正在尝试编写一个接受2个值的函数,并且必须返回这样的元素
this.getinput = function(x, y) {
var text123 = "by." + x + "('" + y + "')"
return element(text123);
所以x和y在这里可以是任何值,如
x: "buttonText" y:"save"
x: "class" y: ".css"
这有效
element(by.buttonText('save'))
但是如果我尝试通过函数中的变量发送相同的内容,则会失败,因为"无效的元素定位器"。有没有更好的方法来动态完成这项工作?
答案 0 :(得分:1)
将对象设置为映射by
API,如下所示:
var byMap = {
buttontext: by.buttonText,
css: by.css,
xpath: by.xpath,
id: by.id,
tagname: by.tagName,
name: by.name,
linktext: by.linkText,
};
function buildLocator(using, value) {
return byMap[using.toLowerCase()](value);
}
function getInput(using, value) {
return element(buildLocator(using, value));
}