2016-09-11 1 views
0

Ich erstelle meinen ersten Seitenobjektmodell-Test. Basierend auf Selenium's test design considerations möchte ich überprüfen, dass bestimmte Elemente gefunden werden, wenn ein Seitenobjekt instanziiert wird.Auf Seitenobjektelemente dynamisch zugreifen

Es gibt eine, einzige, die Überprüfung, die kann und soll, innerhalb der Seite Objekts sein, und das ist zu überprüfen, ob die Seite, und möglicherweise kritische Elemente auf der Seite, korrekt geladen wurden.

Gibt es eine Möglichkeit, dies zu lösen, ohne auf Reflexion zurückgreifen zu müssen?

public class PageObject 
{ 
    [FindsBy(How = How.Name, Using = "q")] 
    private IWebElement q1 { get; set; } 

    [FindsBy(How = How.Name, Using = "qq")] 
    private IWebElement q2 { get; set; } 

    protected IWebDriver webDriver; 

    public PageObject(IWebDriver webDriver) 
    { 
     this.webDriver = webDriver; 

     PageFactory.InitElements(webDriver, this); 
     HighPriorityElementsFound(); 
    } 

    private bool HighPriorityElementsFound() 
    { 
     // how to verify all private IWebElements elements here? 
    } 
} 

Antwort

0

ich verwenden in der Regel den Konstruktor, um zu überprüfen, dass ich auf der richtigen Seite bin und ich tun dies, indem ein Teil der URL identifiziert (URL „payments.asp“ für die Zahlungen Seite enthält) und ein Element, dass bezieht sich nur auf diese bestimmte Seite im Vergleich zu anderen Seiten auf der Website. Wenn dieses Element nicht existiert, dann werfe ich eine Ausnahme mit einer Nachricht und protokolliere die URL, auf der ich mich gerade befinde. Dies hilft, weil Sie sofort wissen, dass Sie sich nicht auf der Seite befinden, auf der Sie landen möchten, oder dass die Seite nicht richtig geladen wurde.

Ein weiterer Hinweis ... es gibt keine Notwendigkeit für HighPriorityElementsFound(). Sie werden diesen Code nur aus dem Konstruktor aufrufen. Warum also nicht einfach diesen Code in den Konstruktor einfügen?

+0

Im Grunde sagen Sie, was ich zu erreichen versuche, aber ich fürchte, es beantwortet die Frage nicht. Ich versuche, ein Element zu extrahieren, das nur für diese Seite spezifisch ist, anstatt es hart zu codieren. Nicht sicher, was du mit deinem letzten Satz meinst. Ich rufe 'HighPriorityElementsFound' vom Konstruktor auf. Ob es eine Methode ist oder nicht ist irrelevant. – filur

+0

Wie könnte Ihr Skript ein Element identifizieren, das im Vergleich zu allen anderen Seiten auf der Website, die es noch nie besucht hat, eindeutig ist? Im zweiten Punkt sind Funktionen für wiederverwendbaren Code. 'HighPriorityElementsFound()' wird niemals wiederverwendet, also warum in eine Funktion einfügen? Außerdem gibt es einen 'bool' zurück, aber du nimmst die Rückkehr nicht auf, also warum sollte man einen' Bool' zurückgeben? – JeffC

Verwandte Themen