2016-12-28 1 views
0

J'ai une simple boucle qui permet de tester une liste.Est-ce que IList <IWebElement> peut fonctionner avec PageObject?

La boucle fonctionne bien, mais je me demande s'il est possible d'utiliser Page-object? Je ne peux pas sembler trouver si quelqu'un d'autre l'a fait. Toute aide serait appréciée.

C'est ce que je

public SeleniumPage ClickLink() 
     { 
      IList<IWebElement> Items= PropertiesCollection.driver.FindElements(By.XPath("html/body/div/div[2]/div/div[1]/div[1]/ul/li")); 
      foreach (IWebElement Item in Items) 
      { 
       Item.ChinsayClick(); 
       System.Threading.Thread.Sleep(2000); 
      } 
      return new SeleniumPage(); 
     } 

Mais préférerais avoir quelque chose comme ça.

[FindsBy(How = How.XPath, Using = "html/body/div/div[2]/div/div[1]/div[1]/ul/li")] 
     public IWebElement List { get; set; } 


    public SeleniumPage ClickLink() 
      { 
       IList<IWebElement> Items= List; 
       foreach (IWebElement Item in Items) 
       { 
        Item.ChinsayClick(); 
        System.Threading.Thread.Sleep(2000); 
       } 
       return new SeleniumPage(); 
      } 
+1

Quel est le problème avec ce que vous avez? – Guy

+0

bien ... que j'ai demandé avant j'ai remarqué que c'était assez simple à corriger =/ Va poster ma réponse bientôt. – Dymond

Répondre

0

On dirait que c'était une réponse simple à ceci, donc je répondrai à ma propre question si elle pourrait aider un autre corps.

Nous pouvons ajouter IList directement au PageObject comme

Public IList<IWebElement> 

Et puis appelez juste de la boucle

Solution:

[FindsBy(How = How.XPath, Using = "html/body/div/div[2]/div/div[1]/div[1]/ul/li")] 
public IList<IWebElement> Lists { get; set; } 

public SeleniumPage() 
{ 
    foreach (IWebElement List in Lists) 
    { 
     List.ChinsayClick(); 
     System.Threading.Thread.Sleep(2000); 
    } 
    return new SeleniumPage(); 
} 
+0

N'oubliez pas de revenir et d'accepter ceci comme réponse afin que la question soit marquée comme réponse. – JeffC