【问题标题】:How to select all values of a Dropdown using protractor如何使用量角器选择下拉列表的所有值
【发布时间】:2017-04-24 18:20:44
【问题描述】:

我有一个场景,通过单击打开的下拉菜单有一个元素。所以我必须一个一个地选择下拉列表的每个值。所以选择一个值然后下拉关闭然后再次需要打开一个下拉并选择第二个值等等,每次选择后我需要执行一些操作。

这是我尝试过的代码。

this.allZoomTimeValues.each((value)=>{  
                  browser.driver.sleep(3000) 
                console.log("1")
                value.getText().then(a=>{
                     console.log("2")
                    this.buttonCross.click().then(function(){
                         console.log("3")
                            browser.driver.sleep(3000).then(function(){
                                 console.log("4")
                                  browser.actions().mouseMove(this.canvas.get(0), {x: 10, y: 80}).click().perform();  
                            })

                    });
                });
            });

所以它抛出错误“失败:无法读取未定义的属性'canvas'

我知道这是由于承诺,但不确定如何逐个解决承诺的代码。 这是显示的输出

1
1
1
1
1
1
1
1
1
1
2
3
4
F

所以这里返回所有 10 个值,最后一个所有其他承诺都已解决。

所以请帮助我如何选择下拉列表的每个值

【问题讨论】:

    标签: typescript promise protractor


    【解决方案1】:

    因为它是一个promise,并且循环会遍历之前的所有值 在下一个线程中调用 promise 解析器处理程序。

    试试这个:

    a(0);
    
    function a(index) {
    let value = this.allZoomTimeValues[index];
    if (!value) {return;}
    browser.driver.sleep(3000) 
                    value.getText().then(a=>{
                        this.buttonCross.click().then(function(){
                                browser.driver.sleep(3000).then(function(){
                                      browser.actions().mouseMove(this.canvas.get(0), {x: 10, y: 80}).click().perform();  
    				a(++index);
                                })
    
                        });
                    });
    }

    【讨论】:

    • 谢谢!很多...:)
    猜你喜欢
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    相关资源
    最近更新 更多