2016-12-26 2 views
0

Я строй системы тестирования для веба-сайта с помощью страницы объектной модели с селеномPage Object Model Практика

Я имею в виду, что в общем, если у меня есть две страницы с точными пользовательскими элементами управления и функциями, но разными URL, я должен создать один класс страницы отца, у которого есть два класса, наследующие его. Но что, если у меня есть те же две страницы с разными локаторами для элементов управления? что вы думаете? вы считаете, что создание совершенно отдельного класса для каждой страницы будет хорошей практикой? или есть способ позволить классам детей переопределять локаторы? зная, что я использую PageFactory.

Вот пример

public class Header 
    { 
    [FindsBy(How = How.ClassName, Using = "logout_button")] 
    public IWebElement BtnLogout { get; set; } 

    public Header() 
    { 
    PageFactory.InitElements(Browser.Driver, this); 
    } 

    public void Logout() 
    { 
     this.BtnLogout.Click(); 

    } 

} 

public class SecondHeader 
{ 
    [FindsBy(How = How.ClassName, Using = "logout")] 
    public IWebElement BtnLogout { get; set; } 

    public Header() 
    { 
    PageFactory.InitElements(Browser.Driver, this); 
    } 

    public void Logout() 
    { 
     this.BtnLogout.Click(); 

    } 

} 
+2

Использование наследования, строить Parent (отец) страницы и передать значение локатора, как парам, чтобы получить контроль. НТН. –

+0

как передать локаторы при использовании [FindsBy (How = How.method, Using = value)] –

+0

Можете ли вы, пожалуйста, быстро разместить здесь образец кода? –

ответ

2

Вы можете сделать так:

public class Header 
    { 
    [FindsBy(How = How.ClassName, Using = "logout_button")] 
    public virtual IWebElement BtnLogout { get; set; } 

    public Header() 
    { 
    PageFactory.InitElements(Browser.Driver, this); 
    } 

    public void Logout() 
    { 
     this.BtnLogout.Click(); 

    } 

} 

public class SecondHeader: Header 
{ 
    [FindsBy(How = How.ClassName, Using = "logout")] 
    public overidde IWebElement BtnLogout { get; set; } 
} 
Смежные вопросы