javascript - 如何等到页面加载图像在非 Angular 页面上的 Protractor 中消失

标签 javascript protractor gif loader

在非 Angular 站点上,当我单击某个单选按钮时,出现页面加载 gif。在 Protractor 测试中,我想等到这个加载器 gif 消失,然后检查另一个元素。

加载程序的 HTML(一直存在):

<div class="loader" style="display: none;">
    <div id="loader">
        <img src="/img/loading.gif">
    </div>
    <div class="totalMaskForLoader"></div>
</div>

我在测试中做了什么:

        ...
        //  click on balance dropdown
        page.sortByBalanceSelector.click();

        browser.wait(function() {
                    // return a boolean here. Wait for spinner to be gone.
                    return !browser.isElementPresent(by.css(".loader"));
                }, 20000);

        // compare to the starting player's username
        expect(page.hasText(page.usernameCellButton)).not.toContain(startingUsername);

问题是我总是得到

Wait timed out after 20009ms

如何等待加载器 gif 消失?

最佳答案

有一个内置的invisibilityOf此用例的预期条件:

page.sortByBalanceSelector.click();

var loader = element(by.id("loader"));
var EC = protractor.ExpectedConditions;

browser.wait(EC.invisibilityOf(loader), 5000);

您也可以使用 stalenessOf这基本上意味着“不存在”。


您当前方法的问题在于,您将“不”应用于 isElementPresent() 返回的 promise ,并且由于 promise 始终为真,由于等待条件,您总是会得到“假”,因此会出现超时错误。

关于javascript - 如何等到页面加载图像在非 Angular 页面上的 Protractor 中消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42276871/

相关文章:

jasmine - 如何关闭堆栈失败消息?

javascript - 如何使用 Selenium 或 Protractor 获取 HTML 中嵌套元素的文本以实现自动化?

javascript - 加载 jquery 时不工作

angularjs-e2e - 在等待 Protractor 与具有基本 Protractor 测试的页面同步时遇到错误

java - 为什么这个 GIF 在使用 Java ImageIO 调整大小时最终变成黑色方 block

javascript - 如何使用 Canvas 放置 gif

java - 如何从包含多个帧的 .png 中制作 gif?

javascript - 查找对象的最大和最小内部数组

javascript - Angularjs $anchorScroll.yOffset 不适用于 ng-sticky header

javascript - 如何在不使用 html2canvas 的情况下将 html div 转换为 canvas?