2017-02-16 61 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)。如果它不包括相关的广告系列,否则它只会在页面上找到第一个匹配的元素。