angularjs - 如何使用 Protractor 验证 Angular Js 的 Toaster?

标签 angularjs jasmine protractor

我是使用 Protractor 测试 Angular js 应用程序的新手。 我有一个提交按钮,单击它后,窗口上会弹出 toastr 消息。

提交按钮位于下方。

   <button title="Add the Expense Claim" ng-show="addExpDetailsShow" class="btn btn-primary btn-sm" ng-click="addExpenseDetails()">Add</button>

Toaster div如下

<div class="toast-top-right" id="toast-container"><div style="" class="toast toast-error"><button class="toast-close-button">×</button><div class="toast-message">Select Expense Type.<br>Amount should be between 0.10 to 100000000.</div></div></div>

现在我需要验证 toastr 是否显示,并且需要验证 toastr 消息。我正在使用 Jasmine 来编写我的测试用例。通过谷歌搜索我写了下面的代码。

it('adding expense', function(){

    element(by.xpath(".//*[@id='navbar-collapse']/ul[1]/li[2]/a")).click();
    element(by.xpath(".//*[@id='main-container']/div[1]/div/div/div[3]/div/button[1]")).click();    
    element(by.css('[ng-click="addExpenseDetails()"]')).click();
    toast = $$('.toast toast-error');
    browser.manage().timeouts().implicitlyWait(1000);
    expect(toast.getAttribute('value')).toEqual('some value');
     expect(toast.isDisplayed()).toBe(true);

});

最佳答案

验证 toastr 与验证 Protractor 中的任何其他元素类似。然而,挑战是在它出现和消失的时间范围内进行验证。要验证其详细信息,请尝试等待其出现,然后进行验证。方法如下 -

it('adding expense', function(){
    var EC = protractor.ExpectedConditions;
    element(by.css('[ng-click="addExpenseDetails()"]')).click()
    //Verify toast after click event returns promise
    .then(function(){
        toast = $('.toast toast-error');
        browser.wait(EC.visibilityOf(toast), 20000) //wait until toast is displayed
        .then(function(){
            expect(toast.getAttribute('value')).toEqual('some value');
        });
    });
});

希望这有帮助。

关于angularjs - 如何使用 Protractor 验证 Angular Js 的 Toaster?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32242302/

相关文章:

javascript - 为什么 ng-options 指令需要 ng-model

javascript - 显示/隐藏 SELECT 选项?

javascript - 使用 Jasmine 访问 js 模块的方法,以便可以单独测试它们

angular - 如何在按钮标签angular2中测试routerLink

Angular 单元测试 - 使用 stub 模拟子组件

javascript - 如何在 Protractor 中使用javascript从浏览器窗口的中间或底部滚动浏览器窗口的顶部

javascript - 使用 Protractor 测试 AngularJS 应用程序时如何处理预期文本中的 '

angularjs - 如何安装 ngSanitize?

javascript - 重定向时 AngularJS 无限循环

linux - 我如何使用 Xvfb 在带有 chrome 的 Jenkins 上运行 headless (headless) Protractor ?