Javascript 在量角器中返回布尔值而不是success fail

Javascript 在量角器中返回布尔值而不是success fail,javascript,angularjs,webdriver,protractor,Javascript,Angularjs,Webdriver,Protractor,我要做的是确定登录用户是否是公司的客户。我有一个div,如果登录的人是经理,它将显示经理id,如果不是,则重定向到登录屏幕。我想有条件地测试尝试登录的帐户id是否是客户或经理,如果其中一个是客户或经理,则执行不同的操作。如果测试解析为true,则一切正常,承诺也得到了解决,但如果失败,测试将暂停(等待答案,直到等待完成),而不是给出错误的结果 .then(browser.executeScript('return window.find("isCompany:true");')), .then

我要做的是确定登录用户是否是公司的客户。我有一个div,如果登录的人是经理,它将显示经理id,如果不是,则重定向到登录屏幕。我想有条件地测试尝试登录的帐户id是否是客户或经理,如果其中一个是客户或经理,则执行不同的操作。如果测试解析为true,则一切正常,承诺也得到了解决,但如果失败,测试将暂停(等待答案,直到等待完成),而不是给出错误的结果

.then(browser.executeScript('return window.find("isCompany:true");')), 
.then(function () {
        return expect(browser.wait(EC.textToBePresentInElement(element(by.id("url")), qr), wait)).toBe(true);
    }, function () {
          ....
    });

我认为您需要解决由
浏览器返回的承诺。等待()


我认为如果您设置一个helper函数来返回
ExpectedConditions.texttobepresentElement
的值会更容易。那么你就不必担心把承诺连在一起了。我使用一个名为
Utils
的助手类来完成与您所做的几乎相同的事情。这里有一个例子

在utils类中,我有:

function waitForElementText(element, elementText) {
    return browser.wait(this.ec.textToBePresentInElement(element, elementText), this.timeout);
}
使用您的代码段,您可以这样使用它:

util.waitForElementText(element, elementText)
    .then(function (isCompany) {
        if(isCompany) {
           // do something
        } else {
           // do something else
        }            
}

不,结果本质上是同一个问题,如果测试解析为true,那么一切都很好,承诺是true,但是如果失败,测试只是暂停(等待一个true的答案,直到等待结束),而不是给出一个错误的结果。
util.waitForElementText(element, elementText)
    .then(function (isCompany) {
        if(isCompany) {
           // do something
        } else {
           // do something else
        }            
}