ansync无法获得量角器

时间:2016-01-11 01:20:33

标签: angularjs selenium-webdriver jasmine protractor karma-runner

我正在尝试在做出某些决定后点击该元素。我必须遍历某些异步循环,然后我松开变量。不知道我能做些什么才能获得elt的价值。

这是我的代码

 element.all(by.css('.top-bar li')).each(function(elt, index) {

                    elt.getText().then(function(text) {

                        if(index==0 && text=='logout'){

                            elt.click();


                        }

                        if(index==0 && text == 'My Account'){

                            elt.click();

                        }

                    });
                });

所以elt.click给了我这个错误

  Failed: stale element reference: element is not attached to the page document
      (Session info: chrome=47.0.2526.106)
      (Driver info: chromedriver=2.20.353124 (035346203162d32c80f1dce587c8154a1efa0c3b),platform=Mac OS X 10.11.2 x86_64) (WARNING: The server did not provide any stacktrace information)
    Command duration or timeout: 8 milliseconds

我做错了什么?

1 个答案:

答案 0 :(得分:2)

  

在网站上可能存在<li> nay已注销或我的帐户作为其第一个元素的情况。如果它注销,那么我必须点击该元素。如果是我的帐户,那么我必须做一些不同的事情

我会获取第一个菜单项的文本,然后根据它的值来决定做什么:

var firstMenuItem = element.all(by.css('.top-bar li')).first();
firstMenuItem.getText().then(function (text) {
    if (text === "Log Out") {
        firstMenuItem.click();  // logging out
    } elif (text === "My Account") {
        // do smth else
    } else {
        // probably fail the test here
    }
});