Ich habe den Code, wie WebDriverEventListener in normaler Weise in Selen zu verwenden. Aber ich weiß nicht, wie man das gleiche für PageFactory Muster verwendet.Wie benutze WebDriverEvent Listener in Page Factory Muster
Der Kodex ist wie folgt, müssen zunächst WebDriverEventListner Schnittstelle
public class EventHandler implements WebDriverEventListener{
private Log log = LogFactory.getLog(this.getClass());
public void afterChangeValueOf(WebElement arg0, WebDriver arg1) {
// TODO Auto-generated method stub
log.info("inside method afterChangeValueOf on " + arg0.toString());
log.info("inside method afterChangeValueOf on " + arg0.toString());
}
public void afterClickOn(WebElement arg0, WebDriver arg1) {
// TODO Auto-generated method stub
log.info("inside method afterClickOn on " + arg0.toString());
}
public void afterFindBy(By arg0, WebElement arg1, WebDriver arg2) {
// TODO Auto-generated method stub
log.info("Find happened on " + arg1.toString()
+ " Using method " + arg0.toString());
}
public void afterNavigateBack(WebDriver arg0) {
// TODO Auto-generated method stub
log.info("Inside the after navigateback to " + arg0.getCurrentUrl());
}
public void afterNavigateForward(WebDriver arg0) {
// TODO Auto-generated method stub
log.info("Inside the afterNavigateForward to " + arg0.getCurrentUrl());
}
public void afterNavigateTo(String arg0, WebDriver arg1) {
// TODO Auto-generated method stub
log.info("Inside the afterNavigateTo to " + arg0);
}
public void afterScript(String arg0, WebDriver arg1) {
// TODO Auto-generated method stub
log.info("Inside the afterScript to, Script is " + arg0);
}
public void beforeChangeValueOf(WebElement arg0, WebDriver arg1) {
// TODO Auto-generated method stub
log.info("Inside the beforeChangeValueOf method");
}
public void beforeClickOn(WebElement arg0, WebDriver arg1) {
// TODO Auto-generated method stub
log.info("About to click on the " + arg0.toString());
}
public void beforeFindBy(By arg0, WebElement arg1, WebDriver arg2) {
// TODO Auto-generated method stub
log.info("Just before finding element " + arg1.toString());
}
public void beforeNavigateBack(WebDriver arg0) {
// TODO Auto-generated method stub
log.info("Just before beforeNavigateBack " + arg0.getCurrentUrl());
}
public void beforeNavigateForward(WebDriver arg0) {
// TODO Auto-generated method stub
log.info("Just before beforeNavigateForward " + arg0.getCurrentUrl());
}
public void beforeNavigateTo(String arg0, WebDriver arg1) {
// TODO Auto-generated method stub
log.info("Just before beforeNavigateTo " + arg0);
}
public void beforeScript(String arg0, WebDriver arg1) {
// TODO Auto-generated method stub
log.info("Just before beforeScript " + arg0);
}
public void onException(Throwable arg0, WebDriver arg1) {
log.info("Exception occured at " + arg0.getMessage());
}
public void afterNavigateRefresh(WebDriver arg0) {
// TODO Auto-generated method stub
}
public void beforeNavigateRefresh(WebDriver arg0) {
// TODO Auto-generated method stub
}
}
Als nächstes müssen wir verwenden, um dies in Skript, wie unten implementieren:
@BeforeClass()
public void signIn() throws Exception
{
BasicConfigurator.configure();
PropertyConfigurator.configure(PROPERTIES_FILEPATH);
log = Logger.getLogger("SuperTest");
//Delete the test-output directory
try
{
FileUtils.deleteDirectory(new File("./test-output"));
}
catch(Exception e)
{
}
//Get the Browser Type and initiate the Driver
driver = GenericUtilLibrary.initializeBrowser(driver, BROWSER_TYPE);
driver.manage().deleteAllCookies();
driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
driver.manage().window().maximize();
//create a object for EventFiringWebDriver Class
eventDriver = new EventFiringWebDriver(driver);
//create object of the class (EventHandler) which implemented WebDriverEventListener Interface.
handler = new EventHandler();
//register handler object with EventFiringWebDriver
eventDriver.register(handler);
eventDriver.get(URL);
//CLICK ON SIGNIN BUTTON IN LOGIN PAGE.
LoginPage lpage = new LoginPage(driver);
lpage.clickSignInButton();
//ENTER USER CREDENTIALS AND CLICK ON SIGNON BUTTON IN SIGNIN PAGE.
SignInPage spage = new SignInPage(driver);
spage.clickSignInButton(USERNAME, PASSWORD);
}
Einmal registriert, wird Eventdriver behandeln die Protokollierung der Aktionen von WebDriver, wenn wir eventDriver für alle WebElements verwenden.
Till eventDriver.get (URL); Ich habe kein Problem, aber wenn es zum nächsten Schritt kommt, rufe ich Object Page Classes auf und rufe ihre Methoden auf. Um eventDriver anstelle des Treiberobjekts zu senden, erhalte ich NULLPOINTEREXCEPTION, wenn es die erste Methode selbst aufruft.
Ich habe keine Ahnung, wie Sie WebDriverEventListener verwenden.
Bitte helfen Sie mir dabei.
Dank Denis für Ihre Antwort sein sollte. Wenn ich es wie oben beschrieben ausprobiere, bekomme ich 'java.lang.NullPointerException;' es kommt unter 'com.tecnotree.CLM.Commons.EventHandler.beforeFindBy (EventHandler.java:67)' weil der LoginPage Constructor wie folgt ist: 'public LoginPage (WebDriver-Treiber) { this.driver = Treiber; PageFactory.initElements (driver, this); } ' –
Versuchen Sie," Handler "anstelle von" EventDriver " –
@SaradaAkurathi zu verwenden, versuchen Sie, dieses Beispiel zu überprüfen, es kann Ihnen helfen, https://www.seleniumeasy.com/selenium-tutorials/webdriver-event-listener-example –