有没有一种方法可以将定位符“ by”作为字符串传递给量角器?

时间:2018-09-11 15:06:56

标签: javascript protractor cucumber chai chai-as-promised

我试图避免使用开关箱来验证定位器,然后再创建一个元素。

这是我的代码的样子:

    switch (name.by) {
        case "class":
            return element(by.className(name.value));
        case "cssselector":
            return element(by.cssSelector(name.value));
        case "id":
            return element(by.id(name.value));
        case "linktext":
            return element(by.linkText(name.value));
        case "name":
            return element(by.name(name.value));
        case "partiallinktext":
            return element(by.partialLinkText(name.value));
        case "tagname":
            return element(by.tagName(name.value));;
        case "xpath":
            return element(by.xpath(name.value));;
        default:
            throw new Error ('Invalid option.');
    }

它接收像这样的json结构作为参数:

"rangeFrom": {
   "by": "id",
   "value": "txtRentFrom"
},

我正在寻找类似的东西

element(by[name.by](name.value));

有人知道是否有避免使用开关盒的方法吗?

1 个答案:

答案 0 :(得分:0)

const dict = {
"class": by.classname,
"cssselector": by.cssSelector
...
}

return element(dict[name.by](name.value));