2016-06-13 11 views
0

Ich bin eine komplette Neuentwicklung von Python und Selen, bitte entschuldigen Sie das Design der Lösung.Wiederverwendung von "driver.webdriver" in einer Klasse

Ich habe mich viel umgesehen, aber ich kann nicht die Antwort finden, die ich brauche.

Ich versuche, eine Klasse namens "Navigatoren" zu erstellen, die ich verwenden kann, um einfach um ein System zu navigieren.

Die Idee wäre, dass ich eine Funktion aus der Klasse aufrufen kann, die mich dann zu dem Fenster führen wird, an dem ich arbeiten möchte.

Das Problem, das ich mit Blick auf bin mit der Treibervariable

driver = webdriver.Chrome('C:/temp/chromedriver.exe') 

Jedes Mal, wenn ich die Variable verwenden, ist es eine neue Chrome browser öffnet.

Gibt es eine Möglichkeit für mich, die Variable zu verwenden, ohne einen neuen Browser zu öffnen? Ich möchte, dass meine Funktion Folgendes ausführt:

Users = driver.find_element_by_link_text("Users") 
Users.click() 
+0

Ich denke, das ein bisschen mehr Kontext erfordert. Wie führen Sie Ihre Tests durch? Verwenden Sie ein Framework? Wenn dies der Fall ist, wird es wahrscheinlich eine Vorher-Methode geben, mit der Sie eine Instanz für Ihren Treiber erstellen können. – RemcoW

+0

Haben Sie auch das Entwurfsmuster für Seitenobjekte untersucht? Es erstellt ein Objekt für die Seiten in Ihrer Anwendung. Auf dieser Seite können Sie eine .navigate() -Methode erstellen. Die Art und Weise, wie ich es gemacht habe, bestand darin, eine BasePage zu erstellen, die meine anderen PageObjects überschreiben, also habe ich nur eine einzige Implementierung von .navigate(), die eine URL verwendet, die ich im Konstruktor des Page Object gesetzt habe. (Ich bin mir nicht sicher, dass es das ist, was du versuchst zu erreichen) – RemcoW

Antwort

0

Sie müssen eine einzelne Instanz des Treibers erstellen.

class commonLib{ 
Webdriver driver = null 
private setDriver() 
{ 
    driver = new FirefoxDriver(); 
} 
public static getDriver(){ 
    return driver; 
} 
} 

Also, wo immer Sie den Treiber verwenden müssen. Nutzen Sie die Funktion getDriver();

für ex: - Users=getDriver().find_element_by_link_text("Users") Users.click()

Sie können aber auch den Einsatz von Singleton Klassen für WebDriver Klasse machen, wo nur eine Instanz egal erstellt wird, wie viele Instanzen erstellen, wird es auf einzelne Instanz zeigen werden.

Verwandte Themen