Environment Details
Appium: 1.22.3
java-client : 8.2.0
Android: Real Device
Application Type: Native App
To capture web driver events, I am using WebDriverListener
, and works perfectly when an element initialized using WebElement webelement = driver.findElement(AppiumBy.accessibilityId(""))
AppiumDriver originalAppiumDriver = new AndroidDriver(url, uiAutomator2Options);
WebDriverListener webDriverListener = new DemoWebDriverListener();
WebDriver decoratedAppiumDriver = new EventFiringDecorator<>(webDriverListener).decorate(originalAppiumDriver);
By locatorNavOpenMenu = AppiumBy.accessibilityId("open menu");
WebElement webElementNavOpenMenu =
decoratedAppiumDriver.findElement(locatorNavOpenMenu);
webElementNavOpenMenu.click();
The above works fine, actions performed on the respective element and also Web driver events are getting captured successfully. But the same is not working when used with Page Factory, there I am getting error "java.lang.IllegalArgumentException: object is not an instance of declaring class"
With Page Factory
@AndroidFindBy(accessibility = "open menu")
private WebElement webElementNavOpenMenu1;
@AndroidFindBy(accessibility = "menu item log in")
private WebElement webElementMenuItemLogIn1;
AppiumDriver originalAppiumDriver = new AndroidDriver(url, uiAutomator2Options);
WebDriverListener webDriverListener = new DemoWebDriverListener();
WebDriver decoratedAppiumDriver = new EventFiringDecorator<>(webDriverListener).decorate(originalAppiumDriver);
PageFactory.initElements(new AppiumFieldDecorator(decoratedAppiumDriver), this);
webElementNavOpenMenu1.click();
webElementMenuItemLogIn1.click();
DemoWebDriverListener class
public class DemoWebDriverListener implements WebDriverListener {
public void beforeFindElement(WebDriver driver, By locator) {
System.out.println(" Before Find Element " + locator);
}
public void afterFindElement(WebDriver driver, By locator, WebElement result) {
System.out.println(" After Find Element " + locator);
}
}
Attached here are the sample code, exception, and Appium server log