Java.lang.IllegalArgumentException: невозможно установить io.appium.java_client.android.AndroidElement

я получаю сообщение об ошибке «java.lang.IllegalArgumentException: невозможно установить поле io.appium.java_client.MobileElement»

Сведения об ошибке

java.lang.IllegalArgumentException: невозможно установить Поле io.appium.java_client.android.AndroidElement test.pageObjectLogin.insertUserID для org.openqa.selenium.remote.RemoteWebElement$$EnhancerByCGLIB$$d27c0df4

в sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167) в sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171) в sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81) в java.lang.reflect.Field.set(Field.java:764) в org.openqa.selenium.support.PageFactory.proxyFields(PageFactory.java:117) в org.openqa.selenium.support.PageFactory.initElements(PageFactory.java:105) в test.BasePage.(BasePage.java:25) в test.pageObjectLogin.(pageObjectLogin.java:13) в test.TestTODOLogin.testLogin(TestTODOLogin.java:12) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke(Method.java:498) в org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:134) в org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:597) в org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:173) в org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46) в org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:816) в org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:146) в org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146) в org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128) в java.util.ArrayList.forEach(ArrayList.java:1257) в org.testng.TestRunner.privateRun(TestRunner.java:766) по адресу org.testng.TestRunner.run(TestRunner.java:587) по адресу org.testng.SuiteRunner.runTest(SuiteRunner.java:384) по адресу org.testng.SuiteRunner.access$000(SuiteRunner.java:28) в org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:425) в org.testng.internal.thread.ThreadUtil.lambda$execute$0(ThreadUtil.java:68) в java.util.concurrent.FutureTask.run(FutureTask.java:266) в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) на java.lang.Thread.run(Thread.java:748)

используя конструктор, как показано ниже

BasePage.java

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.pagefactory.AppiumFieldDecorator;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.time.Duration;

public class BasePage {

    public static AppiumDriver<MobileElement> driver;

    public BasePage(AppiumDriver<MobileElement> driver){
        this.driver = driver;;
        PageFactory.initElements(new AppiumFieldDecorator(driver, Duration.ofSeconds(10)), this);
    }

    public void waitForVisibility(AndroidElement e){
        WebDriverWait wait = new WebDriverWait(driver, TestUtils.WAIT);
        wait.until(ExpectedConditions.visibilityOf(e));
    }
    public String getAttribute(AndroidElement e, String attribute){
        waitForVisibility(e);
        return e.getAttribute(attribute);
    }
    public void sendKeys(AndroidElement e, String txt){
        waitForVisibility(e);
        e.sendKeys(txt);
    }
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
1 620
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это называется моделью объекта страницы. во-первых, использование MobileElement и AndroidElement — это неправильный шаг, MobileElement наиболее рекомендуется, потому что работает для Android и ios. этот источник имеет более четкую концепцию, посетите https://blog.testproject.io/2018/07/31/page-object-model-appium-java-android/ номер контрольной точки

Другие вопросы по теме