2017-02-16 45 views
0

我目前正在嘗試遍歷中繼器並刪除由我的測試創建的活動。該名稱是通過來自spec文件的調用傳入的,然後應該使用它來過濾轉發器中的所有廣告系列,並在找到具有該名稱的廣告系列時選擇刪除按鈕,但目前看起來不起作用,而我我不知道爲什麼,因爲我沒有發現元素沒有找到任何錯誤等。因此,我認爲我的邏輯是錯誤的。量角器:使用中繼器和正確過濾的問題

我使用pageObject.js來支持spec.js文件。

pageObject.js

this.campaignDelete = function(name) { // Currently not tested.  
     element.all('campaign in campaignsName').filter(function(item) { 
      item.element(by.binding('campaign.Name')).getText().then(function(title) { 
       item.foreach(function() { 
        if(title === name) { 
         this.delete = element(by.css('[ng-click="showDeleteCampaignModel(campaign)"]')).click(); 
         this.confirm = element(by.css('[ng-click="deleteCampaign()"]')).click(); 
        } 
       }); 
      }); 
     }); 
    }; 

Spec.js

describe('Deletes the newly created campaign', function() { 

    beforeEach(function() { 
     browser.get(browser.params.urls.dashboard); 
    }); 

    it('Should delete the newly created campaign', function() { 
     campaignPage.campaignDelete(browser.params.campaign.name); 
    }); 
}); 
+0

您似乎在您要測試的代碼中使用量角器方法,而不是在測試本身中。你確定這就是你想要做的? – Hamms

+0

我還沒有添加檢查,看看它是否被成功刪除,只是試圖讓它刪除中繼器中的行。我會在它工作後添加一個期望值(我可以手動查看它是否將其刪除) – theHussle

+0

這就是我所說的;你在功能元素中使用像'element.all'和'by.binding'這樣的測試方法;這些方法僅用於測試。 – Hamms

回答

0

在你的代碼的第二行缺少by.repeater定位策略,它應該是 - element.all(by.repeater('campaign in campaignsName')).filter(function(item) {

您可以使用 -直接獲取所有廣告系列名稱元素

by.repeater

這下面的代碼應能返回你匹配的運動。

var reqcamp = element.all(by.repeater('campaign in campaignsName').column('campaign.Name')).filter(function(elem, index) { 
     return elem.getText().then(function(text) { 
     return text === name; 
     }); 
    }).first(); 

我不確定刪除語句ie。 CSS部分,是正確的(不確定沒有HTML)。如果它不包括相關的廣告系列,否則它只會在頁面上找到第一個匹配的元素。