量角器 - 动态构建"元素"功能

时间:2018-06-13 23:57:23

标签: jasmine protractor

我是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'))

但是如果我尝试通过函数中的变量发送相同的内容,则会失败,因为"无效的元素定位器"。有没有更好的方法来动态完成这项工作?

1 个答案:

答案 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));
}