簡體   English   中英

AngularJS和量角器-在元素.isDisplayed()時執行.click()

[英]AngularJS & Protractor - Perform .click() while an element .isDisplayed()

我想在我的AngularJS應用中測試“顯示更多”按鈕,因此,當用戶單擊按鈕時,它將加載一些內容,沒有更多可顯示按鈕隱藏的地方。

顯示“顯示更多”時如何執行.click() 我不想對循環數進行硬編碼,但是以某種方式將.isDisplayed() (即使它返回了一個承諾)插入while()

2種方法來做恕我直言,

由於.click實際上是在創建諾言,因此您不能同時循環它-它只會創建一堆相同的諾言。 我為此創建了一個遞歸函數:

reclick = function(elementos) {
        if (elementos.isDisplayed()) {
            elementos.click().then(function () {
                console.log('click');
                //YOUR CHECKS AFTER CLICK HERE
                return reclick(elementos);
            });
        }
    };
reclick(anyElement);

您可以使它與其他函數一起可重用,作為單擊后要執行的代碼的參數...

  • 更簡單的版本是將多余的it('should have something after click')包裝到while()循環中,這樣您就不必處理promises(但這取決於afterEach()和beforeEach()中的內容。 。

我會發現所有“ Show More按鈕和過濾器僅使用filter() 可見 執行:

// find all "Show More" links by link text and filter only visible
var showMores = element.all(by.linkText("Show More")).filter(function (link) {
    return link.isDisplayed().then(function (value) {
        return value;
    });
});

// for each visible "Show More", click it
showMores.each(function (link) {
    link.click();

    // TODO: assertions/expectations
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM