Since java client 8.5.1 where cglib was replaced with bytebuddy there's an issue with widget proxying.
public abstract class CardNumberField extends Widget {
@AndroidFindBy(id = "inputViewId")
protected WebElement field;
protected CardNumberField(WebElement element) {
super(element);
}
public abstract String getLabel();
}
public class AndroidCardNumberField extends CardNumberField {
protected AndroidCardNumberField(WebElement element) {
super(element);
}
public String getLabel() {
final String attribute = "hint";
return field.getAttribute(attribute);
}
}
@AndroidFindBy(id = "inputId")
@OverrideWidget(androidUIAutomator = AndroidCardNumberField.class)
private CardNumberField cardAccountField;
java.lang.IllegalArgumentException: None of [public static java.lang.Object io.appium.java_client.proxy.Interceptor.intercept(java.lang.Object,java.lang.reflect.Method,java.lang.Object[],java.util.concurrent.Callable) throws java.lang.Throwable, private static java.lang.Object io.appium.java_client.proxy.Interceptor.lambda$null$2(java.lang.Object), private static java.lang.Object io.appium.java_client.proxy.Interceptor.lambda$null$0(java.lang.Object), private static void io.appium.java_client.proxy.Interceptor.lambda$intercept$3(java.lang.Object,java.lang.reflect.Method,java.lang.Object[],java.lang.Object,io.appium.java_client.proxy.MethodCallListener), private static void io.appium.java_client.proxy.Interceptor.lambda$intercept$1(java.lang.Object,java.lang.reflect.Method,java.lang.Object[],io.appium.java_client.proxy.MethodCallListener)] allows for delegation from public abstract java.lang.String autotests.component.field.cardnumber.CardNumberField.getLabel()
at net.bytebuddy.implementation.bind.MethodDelegationBinder$Processor.bind(MethodDelegationBinder.java:1099)
at net.bytebuddy.implementation.MethodDelegation$Appender.apply(MethodDelegation.java:1349)
at net.bytebuddy.dynamic.scaffold.TypeWriter$MethodPool$Record$ForDefinedMethod$WithBody.applyCode(TypeWriter.java:730)
at net.bytebuddy.dynamic.scaffold.TypeWriter$MethodPool$Record$ForDefinedMethod$WithBody.applyBody(TypeWriter.java:715)
at net.bytebuddy.dynamic.scaffold.TypeWriter$MethodPool$Record$ForDefinedMethod.apply(TypeWriter.java:622)
at net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForCreation.create(TypeWriter.java:6043)
at net.bytebuddy.dynamic.scaffold.TypeWriter$Default.make(TypeWriter.java:2224)
at net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase$UsingTypeWriter.make(DynamicType.java:4050)
at net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase.make(DynamicType.java:3734)
at net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase$Delegator.make(DynamicType.java:3986)
at io.appium.java_client.proxy.Helpers.createProxy(Helpers.java:121)
at io.appium.java_client.pagefactory.utils.ProxyFactory.getEnhancedProxy(ProxyFactory.java:83)
at io.appium.java_client.pagefactory.AppiumFieldDecorator.decorateWidget(AppiumFieldDecorator.java:199)
at io.appium.java_client.pagefactory.AppiumFieldDecorator.decorate(AppiumFieldDecorator.java:148)
at org.openqa.selenium.support.PageFactory.proxyFields(PageFactory.java:111)
at org.openqa.selenium.support.PageFactory.initElements(PageFactory.java:103)
at autotests.screen.BaseScreen.<init>(BaseScreen.java:23)
Description
Since java client 8.5.1 where cglib was replaced with bytebuddy there's an issue with widget proxying.
Environment
Code To Reproduce Issue [ Good To Have ]
Widgets:
in some screen class:
Exception Stacktraces