Anstatt es auf jeder einzelnen Seite einzeln schreiben zu müssen, ist es möglich, an einer Stelle auf einer hohen Ebene (möglicherweise in der Basisklasse) zu tun?
Ja, ist es möglich, durch WebDriverEventListener
in BaseClassForUiTest
Implementierung und Event-Handler-Methoden überschreiben die entsprechenden WebDriver
Ereignisse Handhabung nach an einem Ort müssen.
Here Jede Methode entspricht einem Ereignis. Entsprechend Ihrer Anforderung müssen Sie mit der Methode afterNavigateTo()
umgehen. Dieser wird jedes Mal aufgerufen, wenn die Navigation zu einer Seite abgeschlossen ist.
Sie müssen eine Textüberprüfung des Seitencodes in dieser Methode durchführen, damit Ihr Code jedes Mal ausgeführt wird, wenn die Seite zu einer anderen Seite navigiert.
public class BaseClassForUiTest implements WebDriverEventListener
{
---------
---------
public void afterNavigateTo(String arg0, WebDriver arg1) {
// perform desire text checker stuff on the page here
}
}
Jetzt Event erstellen Werfen WebDriver Ihren Test auszuführen: -
erstellen regelmäßig WebDriver.
FirefoxDriver driver = new FirefoxDriver();
Jetzt ein EventThrowingWebDriver
mit unserem regelmäßigen WebDriver
oben erstellt erstellen.
EventFiringWebDriver eventDriver = new EventFiringWebDriver(driver);
eine Instanz Ihrer eventHandler
Klasse erstellen und es für Ereignisse registrieren über die Registermethode EventFiringWebDriver
Objekt erstellt, wie oben: -
BaseClassForUiTest handler = new BaseClassForUiTest();
eventDriver.register(handler);
Vollcode: -
import org.openqa.selenium.support.events.EventFiringWebDriver;
public class BaseClassForUiTest {
public void test() throws Exception {
FirefoxDriver driver = new FirefoxDriver();
EventFiringWebDriver eventDriver = new EventFiringWebDriver(driver);
BaseClassForUiTest handler = new BaseClassForUiTest();
eventDriver.register(handler);
eventDriver.get("your url");
//Now do your further stuff
}
}
Thanks Saurabh tun. Das ist gutes Zeug. In allen Tests verwenden wir jedoch keine driver.get (URL). Stattdessen klicken wir auf Links und Schaltflächen, die wiederum die Navigation übernehmen. Können diese generisch auf Basisklassenebene erfasst werden, um eines der von WebDriverEventListener angebotenen Ereignisse zu generieren? – naspras
Ja, es gibt mehrere Methoden, die auf jedem Link Link bei der Navigation der Seite auftreten können, müssen Sie es implementieren, ich bin sicher, es wird Ihr Problem lösen. Danke .. :) –
Sie haben Recht. Ich kann die Methode afterClickOn() verwenden. Vielen Dank! – naspras