appium / java-client

Java language binding for writing Appium Tests, conforms to W3C WebDriver Protocol
Apache License 2.0
1.2k stars 755 forks source link

java.lang.ExceptionInInitializerError using Appium with PageFactory #1971

Closed Karthikvt143 closed 1 year ago

Karthikvt143 commented 1 year ago

this is my appdriver class

public class Appdrivers { private static ThreadLocal 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 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.(Login.java:27) at pfs.Login_Test.login(Login_Test.java:12)

Abhishekkumar503 commented 11 months ago

need solution of this.

jyotirnjn45 commented 7 months ago

i am also facing the same issue as above