2016-12-26 4 views
0

Ich baue eine Test-Framework für eine Website mit Selen Seite Object ModelSeite Object Model Praktiken

ich, dass im Allgemeinen denke, wenn ich zwei Seiten mit dem genauen Benutzern Bedienelemente und Funktionen, aber unterschiedlichen URLs ich schaffen soll Eine Vaterseitenklasse, die zwei Klassen davon erbt. Aber was, wenn ich die gleichen zwei Seiten mit verschiedenen Locators für Kontrollen habe? Was denken Sie? Denkst du, dass das Erstellen einer völlig separaten Klasse für jede Seite eine gute Übung sein wird? oder gibt es eine Möglichkeit, die Kinder Klassen Locator zu überschreiben? Ich weiß, dass ich PageFactory verwende.

Hier ist ein Beispiel

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

Verwenden Erbe, Eltern (Vater) Seite bauen und den Locator Wert als param geben, um die Kontrolle zu bekommen. HTH. –

+0

Wie übergebe ich Locators bei Verwendung von [FindsBy (How = How.method, Using = Wert)] –

+0

Können Sie den Beispielcode hier schnell posten? –

Antwort

2

Sie mögen dies tun können:

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; } 
} 
Verwandte Themen