2013-10-19 9 views
0

我想问一些帮助!我使用WebDriver编写自动化测试,并具有下面的代码。这种静态方法的目的是从页面的certian部分收集对象。添加一个新的对象到列表中,那么已经存储的对象将被新的对象覆盖

正如你所看到的,我使用for循环来修改定位器值,我测试定位器是否显示它。如果它被显示,那么我启动MenuGroupObject对象,然后将它放入一个List对象,它是最后的返回值。

请看看代码片段下面的输出结果。

public static List<MenuGroupPageObject> GetListOfMenuGroups(IWebDriver webDriver) 
    { 
     var listOfMenuGroupPageObjects = new List<MenuGroupPageObject>(); 

     var menuGroupLocatorPattern = MenuBarLocatorHelper.GetMenuBarRootLocator() + 
             MenuBarLocatorHelper.GetLocatorPatternForMenuGroups(); 

     for (var i = 1; i < 20; i++) 
     { 
      var realMenuGroupNameLocator = menuGroupLocatorPattern.Replace(
       MenuBarLocatorHelper.GetThePureMenuGroupLocatorPatternForMenuGroups(), i.ToString(CultureInfo.InvariantCulture)); 

      if(SafeElementHandler.IsElementPresent(webDriver,By.XPath(realMenuGroupNameLocator))) 
      { 
       var menuGroupObject = new MenuGroupPageObject(webDriver, realMenuGroupNameLocator); 
       listOfMenuGroupPageObjects.Add(menuGroupObject); 

       foreach (MenuGroupPageObject listOfMenuGroupPageObject in listOfMenuGroupPageObjects) 
       { 
        Console.WriteLine("mainlocators in the bag round: " + i + "... " + listOfMenuGroupPageObject.GetMainLocator()); 
       } 
      } 
     } 

     return listOfMenuGroupPageObjects; 
    } 

所以,结果是这样的:

mainlocators in the bag round: 1... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[1] 

mainlocators in the bag round: 2... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[2] 
mainlocators in the bag round: 2... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[2] 

mainlocators in the bag round: 3... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[3] 
mainlocators in the bag round: 3... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[3] 
mainlocators in the bag round: 3... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[3] 

mainlocators in the bag round: 4... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[4] 
mainlocators in the bag round: 4... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[4] 
mainlocators in the bag round: 4... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[4] 
mainlocators in the bag round: 4... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[4] 

mainlocators in the bag round: 5... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[5] 
mainlocators in the bag round: 5... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[5] 
mainlocators in the bag round: 5... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[5] 
mainlocators in the bag round: 5... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[5] 
mainlocators in the bag round: 5... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[5] 

你应该注意到的是,在每一轮中已经存储对象(S)将被最新的覆盖。 但是,它应该是这样的:

mainlocators in the bag round: 1... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[1] 

mainlocators in the bag round: 2... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[1] 
mainlocators in the bag round: 2... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[2] 

mainlocators in the bag round: 3... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[1] 
mainlocators in the bag round: 3... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[2] 
mainlocators in the bag round: 3... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[3] 

mainlocators in the bag round: 4... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[1] 
mainlocators in the bag round: 4... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[2] 
mainlocators in the bag round: 4... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[3] 
mainlocators in the bag round: 4... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[4] 

mainlocators in the bag round: 5... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[1] 
mainlocators in the bag round: 5... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[2] 
mainlocators in the bag round: 5... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[3] 
mainlocators in the bag round: 5... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[4] 
mainlocators in the bag round: 5... //div[@id='contentContainer']/div[@id='container']/div[@id='leftHandMenubar']/ul[5] 

我的问题是,什么是错的?我在c#中检查了列表<>,并且我还没有发现任何缺少的东西(缺少构造器参数或类似的东西)会导致类似这样的事情。

+1

我读过这篇文章三次,不知道你的实际问题是什么。 –

+0

使用调试器来解决这个问题。 –

+0

问题出在'MenuGroupPageObject'对象上。检查你的构造函数并检查'GetMainLocator'方法。 – mcabral

回答

0

正如我在我的评论中写的,MenuPageObject对象有一个静态字段。

相关问题