我得到了代碼如何在硒中以正常方式使用WebDriverEventListener。 但不知道如何使用PageFactory模式相同。如何在頁面工廠模式中使用WebDriverEvent監聽器
的代碼如下,實現WebDriverEventListner接口
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
}
}
接下來,我們需要在腳本如下使用此首先需要:
@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);
}
一旦註冊成功,事件驅動將處理記錄的當我們對所有WebElements使用eventDriver時,WebDriver的行爲。
直到eventDriver.get(URL);我沒有問題,但是當涉及到下一步時,我正在調用對象頁面類並調用它們的方法。發送eventDriver而不是驅動程序對象,當它調用第一個方法本身時,我得到NULLPOINTEREXCEPTION。
我不知道如何使用WebDriverEventListener。
請任何人幫助我。
感謝丹尼斯您的回覆。當按照上面的方法嘗試時,我得到'java.lang.NullPointerException;'它來自'com.tecnotree.CLM.Commons.EventHandler.beforeFindBy(EventHandler.java:67)',因爲LoginPage constrcutor如下所示:'public LoginPage (WebDriver驅動程序){this.driver = driver; PageFactory.initElements(driver,this); }' –
嘗試使用「處理程序」而不是「eventDriver」 –
@SaradaAkurathi,試着檢查這個例子,它可能會幫助你https://www.seleniumeasy.com/selenium-tutorials/webdriver-event-listener-example –