Есть ли способ передать локатор "мимо" в виде строки на транспортире? - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь избежать использования переключателя для проверки локатора, а затем создания элемента.

Вот так выглядит мой код:

    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));

Кто-нибудь знает, есть ли способ избежать использования switch-case?

1 Ответ

0 голосов
/ 11 сентября 2018
const dict = {
"class": by.classname,
"cssselector": by.cssSelector
...
}

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