Was ist der Unterschied zwischen Page Object Model (POM) und Page Factory in Selen?


Antwort 1:

Jagan Maruthappan hat diese Frage bereits sehr gut beantwortet. Ich möchte jedoch einen wichtigen Punkt hinzufügen, den ich während meiner Arbeit an Selen bemerkt habe.

Wenn das Element in Page Factory nicht an einer bestimmten Stelle gefunden wird, enthält das WebElement, in dem Sie das Element speichern, nicht null, sondern ein Proxy-Element oder ähnliches. Dies bedeutet, dass es für Unternehmensprojekte, in denen normalerweise Tausende von Testfällen ausgeführt werden, sehr schwierig ist, den Fehler zu verfolgen.

Ein weiterer Nachteil ist, dass die Page Factory Annotation verwendet. Sie denken vielleicht, warum es ein Nachteil ist. Lassen Sie mich erklären, Annotation bietet bestimmte Funktionen, die den Programmierern die Arbeit erleichtern. Sie sind jedoch auch statisch und können nicht geändert werden. Programmiersprachen wie JAVA ermöglichen es uns, das zu tun, was wir wollen, und wir können es auf verschiedene Arten tun, wie wir es möchten. POM ist nichts anderes als die Implementierung von Object Repository, die sich genau so verhält, als würden wir driver.findElement (By .- (“- - -“)) einfügen. Anweisung direkt in unseren Testskripten.



Antwort 2:

Seitenobjektmodell: Ein Entwurfsmuster: Selen-Code nach Seiten trennen.

Beispiel: Erstellen Sie eine separate Java-Klasse für die Anmeldeseite, eine weitere Klasse für die Startseite usw.

Page Factory: Erweitertes Konzept (POM + neue Funktionen)

1. Elemente werden mit @FindBy Annotation identifiziert

2. Initialisierung aller in Punkt 1 deklarierten Elemente gleichzeitig.

(In POM erfolgt die Initialisierung im laufenden Betrieb)

PageFactory.initElements (Treiber, dies);

Das ist alles.



Antwort 3:

Seitenobjektmodell: Ein Entwurfsmuster: Selen-Code nach Seiten trennen.

Beispiel: Erstellen Sie eine separate Java-Klasse für die Anmeldeseite, eine weitere Klasse für die Startseite usw.

Page Factory: Erweitertes Konzept (POM + neue Funktionen)

1. Elemente werden mit @FindBy Annotation identifiziert

2. Initialisierung aller in Punkt 1 deklarierten Elemente gleichzeitig.

(In POM erfolgt die Initialisierung im laufenden Betrieb)

PageFactory.initElements (Treiber, dies);

Das ist alles.