Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/emacs/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dictionary 如何将映射函数应用于ElementArray Finder中的每个元素_Dictionary_Callback_Promise_Protractor - Fatal编程技术网

Dictionary 如何将映射函数应用于ElementArray Finder中的每个元素

Dictionary 如何将映射函数应用于ElementArray Finder中的每个元素,dictionary,callback,promise,protractor,Dictionary,Callback,Promise,Protractor,我尝试循环,根据文本进行比较,如果匹配,单击元素 我无意中发现了下面的帖子,它非常有用 根据上面帖子中提供的答案,我实现了这个 element.all(by.css('.classname')).map(function (elm, index) { return { elm: elm, text: elm.getText(), index: index }; }).the

我尝试循环,根据文本进行比较,如果匹配,单击元素

我无意中发现了下面的帖子,它非常有用

根据上面帖子中提供的答案,我实现了这个

  element.all(by.css('.classname')).map(function (elm, index) {

        return {
             elm: elm,
            text: elm.getText(),
            index: index

        };
    }).then(function (list) {

        for (var i = 0; i < list.length; i++) {
            if (list[i].text === 'DS_Emulator') {

                return list[i].elm;
            }
        }
        throw new error('Text not found');
    }).then(function (elm) {

          elm.click();           

        });

    });
element.all(by.css('.classname')).map(函数(elm,index){
返回{
榆树:榆树,
text:elm.getText(),
索引:索引
};
}).then(功能(列表){
对于(变量i=0;i
这使得应用程序退出时没有任何错误。这是由于地图中的elm:elm造成的

如果我按照下面的方式修改代码,应用程序就可以正常工作

 element.all(by.css('.classname')).map(function (elm, index) {

        return {
           // elm: elm,
            text: elm.getText(),
            index: index

        };
    }).then(function (list) {

        for (var i = 0; i < list.length; i++) {
            if (list[i].text === 'DS_Emulator') {

                return list[i].index;

              //  return list[i].elm;
            }
        }
        throw new error('Text not found');
        }).then(function (elm) {

          //  elm.click();

            element.all(by.css('.classname')).then(function (items) {

                items[elm].click();

            });

    });
element.all(by.css('.classname')).map(函数(elm,index){
返回{
//榆树:榆树,
text:elm.getText(),
索引:索引
};
}).then(功能(列表){
对于(变量i=0;i

请帮助我了解我的错误所在。

如果需要根据文本查找特定元素,应使用
filter()
而不是
map()
检查文档。提供的示例与您正在寻找的类似--@Gunderson谢谢你。我使用了filter(),效果非常好。但你们能解释一下我在早期代码中使用的映射中使用的elm:elm是否是错误的吗?为什么应用程序会退出?我可以尝试一下,但我不能肯定。我在我的应用程序中尝试过,它也崩溃了,对我来说,这似乎与返回太多(大)对象和JS堆重载有关。但我不知道为什么要在映射对象中返回这个ElementFinder对象anyway@Gunderson我转而使用过滤器。我很想知道为什么我的应用程序没有抛出错误就退出了。大对象解释完全有意义。再次感谢你。