簡體   English   中英

當我解決它並改變頁面(量角器測試)時,保證繼續工作

[英]promise keep working when i resolve it and change page (protractor test)

我有一個表行,我想點擊具有特定標簽(測試服務器標簽)的行中的編輯按鈕, 我要點擊它的一行

這是我的代碼:

public selectOnRow( textSelector:string , clickableSelector : string , value:string) {
    let promise = new Promise(resolve => {
        element.all(by.css(textSelector)).each((elem, i) => {
            elem.getText().then(function (text) {
                if (text === value) {
                    resolve(i);
                }
            });
        });
    });
    promise.then(i => {
        element.all(by.css(clickableSelector)).get(i).click();

    })
}

我稱之為:

beforeAll(async () => {
            page = new AppPage;
            page.navigateTo('/asset/server');
            page.selectOnRow('.column-label div', '.edit-action-btn', 'test server label')
            baseUrl = page.baseUrl;
        });

問題是它點擊了正確的行但是當頁面被更改時仍然selectOnRow正在工作並循環那些不在新頁面中的行! 我收到此錯誤:

失敗:陳舊元素引用:元素未附加到頁面文檔

ElementFinderArray過濾功能

這可能是對element.all的過濾函數的一個很好的用法。 當我們調用filter函數時,返回帶有boolean或承諾為boolean的truthy的元素會被添加到ElementFinderArray ElementFinderArray也是element.all將返回的相同類型的對象。

單擊其中一個元素

當文本匹配時,我們在文本匹配時設置變量索引。 僅在索引為空時設置索引值。 接下來我們將等待過濾功能完成。 然后,我們單擊帶有index值的clickableSelector

等待異步方法

最后要做的是在selectOnRow上返回整個promise。 所以你可以調用await selectOnRow(textSeector, clickableSelector, value);

代碼段

public selectOnRow(textSelector:string, clickableSelector: string, value: string) {
    let index: number;
    return element.all(by.css(textSelector)).filter((elem, i) => {
      return elem.getText().then(text => {
        // test if index is not set
        // also, if the text matches, update the index
        if (!index && text === value) {
          index = i;
        }
        return text === value;
      });
    }).then(() => {
      // wait for the filter function to complete
      // at this point, the index should be set.
      return element.all(by.css(clickableSelector)).get(index).click();
    });
}

暫無
暫無

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

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