javascript - 有没有办法将定位器 "by"作为 Protractor 上的字符串传递?

标签 javascript protractor cucumber chai chai-as-promised

我试图避免使用 switch-case 来验证定位器然后创建元素。

我的代码是这样的:

    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?

最佳答案

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

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

关于javascript - 有没有办法将定位器 "by"作为 Protractor 上的字符串传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52279018/

相关文章:

javascript - 如何在 JavaScript 中禁用右键单击上下文菜单

javascript - Isotope- fitColumns with height auto on items

javascript - 如何从包含的文件重定向到路由

testing - Protractor 预期条件 visibilityOf() 在未显示元素时返回 true

java - Cucumber 框架在运行测试时抛出错误

javascript - JS 数组 - 带有 "for in"循环的奇怪值

linux - 如何在.sh文件中编写ssh连接代码以连接到远程计算机

angularjs - Protractor 等待元素进入 DOM

c# - 使用 CreateInstance 对表格单元格内容进行 Specflow 步骤参数转换

ruby-on-rails - Ruby on Rails 中的全栈测试选项