当前位置: 首页 > 知识库问答 >
问题:

JAVAlang.IllegalArgumentException:无法设置io。阿皮姆。java_客户端。Android雄激素

缑兴贤
2023-03-14

我收到错误“java.lang.IllegalArgumentException:无法设置io.appium.java_client.MobileElement字段”

错误细节

JAVAlang.IllegalArgumentException:无法设置io。阿皮姆。java_客户端。AndroidAndroidElement现场试验。pageObjectLogin。将insertUserID插入组织。openqa。硒。遥远的RemoteWebElement$$EnhancerByGlib$$d27c0df4

在阳光下。反映不安全的附件。通过sun上的SetillegalArgumentException(UnsafeFieldAccessorImpl.java:167)。反映不安全的附件。通过sun上的SetillegalArgumentException(UnsafeFieldAccessorImpl.java:171)。反映UnsafeObjectFieldAccessorImpl。在java上设置(UnsafeObjectFieldAccessorImpl.java:81)。朗,反思一下。领域在org上设置(Field.java:764)。openqa。硒。支持PageFactory。org上的proxyFields(PageFactory.java:117)。openqa。硒。支持PageFactory。测试时使用initElements(PageFactory.java:105)。主页。(BasePage.java:25)在测试中。pageObjectLogin。(pageObjectLogin.java:13)在测试中。睾丸激素。sun上的testLogin(TestTODOLogin.java:12)。反映NativeMethodAccessorImpl。在sun上调用0(本机方法)。反映NativeMethodAccessorImpl。在sun上调用(NativeMethodAccessorImpl.java:62)。反映DelegatingMethodAccessorImpl。在java上调用(DelegatingMethodAccessorImpl.java:43)。朗,反思一下。方法在org上调用(Method.java:498)。testng。内部的我是你的助手。invokeMethod(MethodInvocationHelper.java:134)位于org。testng。内部的TestInvoker。invokeMethod(TestInvoker.java:597)位于org。testng。内部的TestInvoker。invokeTestMethod(TestInvoker.java:173)位于org。testng。内部的MethodRunner。org上的runInSequence(MethodRunner.java:46)。testng。内部的TestInvoker$MethodInvocation代理。在org上调用(TestInvoker.java:816)。testng。内部的TestInvoker。invokeTestMethods(TestInvoker.java:146)位于org。testng。内部的测试方法工人。invokeTestMethods(TestMethodWorker.java:146)位于org。testng。内部的测试方法工人。在java上运行(TestMethodWorker.java:128)。util。ArrayList。forEach(ArrayList.java:1257)位于org。testng。测试者。privateRun(TestRunner.java:766)位于org。testng。测试者。在org上运行(TestRunner.java:587)。testng。SuiteRunner。在org上运行测试(SuiteRunner.java:384)。testng。SuiteRunner。在org上访问$000(SuiteRunner.java:28)。testng。SuiteRunner$SuiteWorker。在org上运行(SuiteRunner.java:425)。testng。内部的线ThreadUtil。lambda$execute$0(ThreadUtil.java:68)在java上运行。util。同时发生的未来任务。在java上运行(FutureTask.java:266)。util。同时发生的线程池执行器。java上的runWorker(ThreadPoolExecutor.java:1149)。util。同时发生的ThreadPoolExecutor$Worker。在java上运行(ThreadPoolExecutor.java:624)。朗。丝线。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);
    }
}

共有1个答案

惠翰藻
2023-03-14

这称为页面对象模型。由于大多数MobileElement的第一步都是错误的,所以建议使用android eElement。这个来源有更清晰的概念,请访问https://blog.testproject.io/2018/07/31/page-object-model-appium-java-android/检查点编号

 类似资料:
  • okhttp底层实现? android四大组件? 为什么service进行耗时操作?不可以直接放线程里面吗? 子线程和主线程的通信方式? 子线程可以用Handler吗? 可以直接new一个吗? Looper为什么不会让主线程卡死? ANR遇到过吗? 线程池遇到过? mqtt的底层协议?如何做到长连接?通信的过程? tcp中某个包丢了会发生什么? tcp和udp的区别? mvp和mvc的区别? ht

  • 在我用Cython编译破坏了我的Ubuntu precise之后,我喜欢保持系统Python的整洁。我喜欢2.7.x的 所以我试着用~/使用PyCharm中的pyenv全局解释器。pyenv/bin/python-local-exec,它可以工作,但不幸的是已经被弃用了。当我试图从pyenv Python 3全局解释器创建virtualenv时,它抛出了以下错误: 如前所述,我不想将Python

  • 我试图通过OnConnect方法中的location客户端请求位置更新。我的片段实现了LocationListener,GooglePlayServicesClient。ConnectionCallbacks和GooglePlayServicesClient。OnConnectionFailedListener。 代码看起来像这样。 错误是“找不到适用于requestLocationUpdates

  • 自定义成菜单 说明: 1)启用该功能后,直播客户端可以通过自定义菜单的方式加载用户自定义的网页,方便结合自身业务进行交互操作(客户端5.0.0以上版本支持) 问卷设置 说明: 1)在直播管理页面点击 “问卷设置”,启用该功能后,直播客户端可以通过接口请求的方式将用户问卷库中的问卷导入到客户端中使用 2)关于问卷设置的具体功能及使用方法,请参考:问卷接口开发指南 菜单设置 说明: 1)支持对客户端的

  • 在我做了插座之后。多房间聊天应用程序的IO服务器如何使用https://github.com/socketio/socket.io-client-java ? 我搜索了很多,在socket的客户端还没有找到最新的例子。对于android,大多数教程和示例都是针对带有节点的服务器端的。js。