2016-05-16 1 views
2

Я использую шаблон PageObjects с веб-драйвером Selenium, например.Проверьте наличие IWebElement при использовании объектов PageObjects с Selenium

public class CategoryPage 
    { 
     private IWebDriver driver; 

     [FindsBy(How = How.CssSelector, Using = ".notFound")] 
     private IWebElement products; 

     public CategoryPage(IWebDriver webDriver) 
     { 
      driver = webDriver; 
     } 

     public bool IsProductList 
     { 
      get 
      { 
       return products != null; // always true. 
      } 
     } 

     // other stuff 
    } 

Я заселение его с помощью:

var page = new CategoryPage(driver); 
    PageFactory.InitElements(driver, page); 
    return page; 

При взгляде на странице IsProductList чек у меня всегда возвращает истину, даже когда я поставил селектор класса или CSS путь, который ISN» t на странице.

Как я должен проверять существование?

ответ

1

Чтобы определить, если элемент присутствует, вы можете использовать IList<IWebElement> объявлять объект страницы и .Count знать, если есть хотя бы один элемент:

public class CategoryPage { 
    private IWebDriver driver; 

    [FindsBy(How = How.CssSelector, Using = ".notFound")] 
    private IList<IWebElement> products; 

    public CategoryPage(IWebDriver webDriver) { 
     driver = webDriver; 
    } 

    public bool IsProductList { 
     get { 
      return products.Count > 0; 
     } 
    } 

    // other stuff 
} 

Другой способ поймать NoSuchElementException:

public class CategoryPage { 
    private IWebDriver driver; 

    [FindsBy(How = How.CssSelector, Using = ".notFound")] 
    private IWebElement products; 

    public CategoryPage(IWebDriver webDriver) { 
     driver = webDriver; 
    } 

    public bool IsProductList { 
     get { 
      try { 
       return products.Equals(products); 
      } catch (NoSuchElementException) { 
       return false; 
      } 
     } 
    } 

    // other stuff 
} 
+0

Я закончил использование списка продуктов, а не контейнера, как в вашем первом примере. Я попробую второй, похоже, что он обещает. – NikolaiDante

Смежные вопросы