在量角器中返回布尔值而不是成功失败

时间:2017-03-25 01:36:40

标签: javascript angularjs webdriver protractor

我要做的是确定登录用户是否是公司的客户。我有一个div,如果登录的人是管理员,则显示管理员ID,如果不是,则重定向到登录屏幕。我想有条件地测试尝试登录的帐户ID是客户还是经理,并且如果是这种情况,则执行不同的操作。如果测试结果为真,那么一切都很好并且承诺得到解决,但如果失败,测试就会停止(等待答案直到等待已经完成),而不是给出错误的结果。

.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 () {
          ....
    });

2 个答案:

答案 0 :(得分:1)

我认为你需要解决browser.wait()

返回的承诺
browser.wait(EC.textToBePresentInElement(element(by.id("isCompany")), 'true'), wait).then(function () {
    // user is a customer
}, function () {
    // user is not a customer
});

答案 1 :(得分:0)

我认为如果你设置一个辅助函数来返回ExpectedConditions.textToBePresentInElement的值会更容易。然后你不必担心将承诺链接在一起。我使用一个名为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
        }            
}