Karthik V T
Karthik V T

Reputation: 1

Java.lang.ExceptionInInitializerError while using Appium with Pagefactory

this is my appdriver class public class Appdrivers {

private static ThreadLocal<WebDriver> driver = new ThreadLocal<>();

public static WebDriver getDriver(){
    return driver.get();
}

public static void setDriver(WebDriver Driver){
    driver.set(Driver);        
}

}

this is my page object class public class Login extends Baseclass {

@FindBy(xpath = "//input[@placeholder='Enter Username']")
public WebElement username;

@FindBy(xpath = "(//*[@name='password'])[2]")
public WebElement password;

@FindBy(xpath = "//*[@type='submit']")
public WebElement login;

public Login() {
    try {
        PageFactory.initElements(new AppiumFieldDecorator(Appdrivers.getDriver()), this);
    } catch (Exception e) {

        e.printStackTrace();
    }

this is my base class public class Baseclass extends Appdrivers{

public static AndroidDriver<MobileElement> driver;


public void launchIFMIS() {
    String androidVersion = "13";
    String deviceName = "IFMIS";
    String platformName = "Android";
    try {
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("VERSION", androidVersion);
        capabilities.setCapability("deviceName", deviceName);
        capabilities.setCapability("platformName", platformName);
        capabilities.setCapability("appPackage", "com.pixelvide.ifmis.finance");
        capabilities.setCapability("autoGrantPermissions", true);
        capabilities.setCapability("appActivity", "com.pixelvide.ifmis.finance.MainActivity");

        driver = new AndroidDriver<MobileElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
        Appdrivers.setDriver(driver);
        
    
        Set<String> contextNames = driver.getContextHandles();
        for (@SuppressWarnings("unused") String contextName : contextNames) {
            // System.out.println(contextName); //prints out something like NATIVE_APP \n
            // WEBVIEW_1
        }
        driver.context((String) contextNames.toArray()[1]);            
        
    } catch (Exception e) {
        Reporter.log(e.getMessage());
    }
}

Facing below issue

java.lang.ExceptionInInitializerError
    at io.appium.java_client.pagefactory.utils.ProxyFactory.getEnhancedProxy(ProxyFactory.java:53)
    at io.appium.java_client.pagefactory.utils.ProxyFactory.getEnhancedProxy(ProxyFactory.java:33)
    at io.appium.java_client.pagefactory.AppiumFieldDecorator.proxyForAnElement(AppiumFieldDecorator.java:216)
    at io.appium.java_client.pagefactory.AppiumFieldDecorator.access$0(AppiumFieldDecorator.java:214)
    at io.appium.java_client.pagefactory.AppiumFieldDecorator$1.proxyForLocator(AppiumFieldDecorator.java:107)
    at org.openqa.selenium.support.pagefactory.DefaultFieldDecorator.decorate(DefaultFieldDecorator.java:62)
    at io.appium.java_client.pagefactory.AppiumFieldDecorator.decorate(AppiumFieldDecorator.java:154)
    at org.openqa.selenium.support.PageFactory.proxyFields(PageFactory.java:113)
    at org.openqa.selenium.support.PageFactory.initElements(PageFactory.java:105)
    at pfs.Login.<init>(Login.java:27)
    at pfs.Login_Test.login(Login_Test.java:12)

Upvotes: 0

Views: 85

Answers (0)

Related Questions