Appium无法识别屏幕上的元素,即使它们是使用initElements初始化的也是如此 - java

场景:

我正在真实设备上启动应用程序
正在登录
在主屏幕上着陆
ANDROID设备中的app不能识别主屏幕元素。我试图点击右上角的帮助图标。

请注意,在任何主屏幕元素上执行操作都是断断续续的

我尝试过的
-我登录后要等待。
-登录后返回首页对象
-在我使用'initElements'初始化主页对象之前,需要等待更多时间。
-在首页构造函数中,我尝试了findElementsById,findElementById,并尝试在调用initElements之前将元素动态等待
-已尝试所有元素的ID
-已尝试对所有元素使用xpath
-尝试杀死应用并重新启动应用,然后再次尝试识别元素
-尝试过JavascriptExecutor
-尝试点击方法

//下面是主页对象屏幕的构造函数,在我登录后会被调用。

public HomePageObjectsNew(Config testConfig) {
        this.testConfig = testConfig;       
        PlatformName = testConfig.getRunTimeProperty("platformNameMobile");
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

List<MobileElement> abc= MobileActions.findElementsById(testConfig, "frag_home_help_imgview_id");
testConfig.logComment(Integer.toString(abc.size()));
        PageFactory.initElements(new AppiumFieldDecorator(testConfig.driver, 5, TimeUnit.SECONDS), this);

    }

//*Login Method:*
public HomePageObjectsNew loginFlowUsingPassword() {
        swipeWalkthroughScreens();
        enterAlreadyExistingEmailID("[email protected]");
        Browser.wait(testConfig, 2);
        MobileActions.waitForVisibility(testConfig, txtFldPassword, 
        "Password field");
        enterPassword();
        clickOnLogin();
        Browser.wait(testConfig, 4);
        return new HomePageObjectsNew(testConfig);

    }

//*My test case:*
@Test(description = "Verify successful Login of an existing now merchant using password flow", dataProvider = "GetMobileTestConfig", timeOut = 700000)
    public void verifyPaymentRequestButtonIsClickableAfterLogin(Config testConfig) {
        try {
            LoginSignUpPageObjects loginSignUpPageObjects = new LoginSignUpPageObjects(testConfig);
            HomePageObjectsNew obj = loginSignUpPageObjects.loginFlowUsingPassword();
            obj.btnHelpScreenHeader.click();
            MobileActions.goBack(testConfig);
            obj.clickOnHamburgerMenu();
            Browser.wait(testConfig, 2);
            obj.clickOnHamburgerMenu();
            loginSignUpPageObjects.clickOnRequestPayment();
            System.out.println("Request Button clicked");
        } catch (Exception e) {
            testConfig.logFail("verifyPaymentRequestButtonIsClickableAfterLogin failed !!");
            e.printStackTrace(System.out);
        }
    }

**Actual:** Not able to click on Home screen elements 
So if i try 10 times only 1 time it works ... NOTE that id's are not dynamic have already confirmed with DEV !!

**Expected:** I should be able to click on home page elements

Appium日志:
[MJSONWP(6fbddb32)]使用args调用AppiumDriver.findElements():[“ id”,“ com.payu.payunow:id / frag_home_help_imgview_id”,“ 6fbddb32-3ee5-4237-beee-c0496d88e69e”]
[BaseDriver]此请求的有效定位器策略:xpath,ID,类名,可访问性ID,-android uiautomator
[BaseDriver]等待长达5000毫秒的条件
[AndroidBootstrap]向android发送命令:{“ cmd”:“ action”,“ action”:“ find”,“ params”:{“ strategy”:“ id”,“ selector”:“ com.payu.payunow:id / frag_home_help_imgview_id“,”上下文“:”“,”多个“:true}}
[AndroidBootstrap] [引导日志] [调试]从客户端获取数据:{“ cmd”:“ action”,“ action”:“ find”,“ params”:{“ strategy”:“ id”,“ selector”:“ com.payu.payunow:id / frag_home_help_imgview_id“,” context“:”“,” multiple“:true}}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug]得到了类型为ACTION的命令
[AndroidBootstrap] [BOOTSTRAP LOG] [debug]有命令操作:查找
[AndroidBootstrap] [引导日志] [调试]使用带有上下文ID的'ID'查找'com.payu.payunow:id / frag_home_help_imgview_id''多个:true
[AndroidBootstrap] [引导日志] [调试]使用:UiSelector [RESOURCE_ID = com.payu.payunow:id / frag_home_help_imgview_id]
[AndroidBootstrap] [引导日志] [调试] getElements选择器:UiSelector [RESOURCE_ID = com.payu.payunow:id / frag_home_help_imgview_id]
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Element []为空:(0)
[AndroidBootstrap] [引导日志] [调试] getElements tmp选择器:UiSelector [INSTANCE = 0,RESOURCE_ID = com.payu.payunow:id / frag_home_help_imgview_id]
[AndroidBootstrap] [引导日志] [调试]无法找到元素。清除辅助功能缓存并重试。
[AndroidBootstrap] [引导日志] [调试]使用带有上下文ID的'ID'查找'com.payu.payunow:id / frag_home_help_imgview_id''多个:true

参考方案

尝试等待直到启用该元素。您可以使用WebDriverWait类。 wait.until(ExpectedConditions.elementToBeClickable(<element_locator>), <your_timeout>));

JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

Java:BigInteger,如何通过OutputStream编写它 - java

我想将BigInteger写入文件。做这个的最好方式是什么。当然,我想从输入流中读取(使用程序,而不是人工)。我必须使用ObjectOutputStream还是有更好的方法?目的是使用尽可能少的字节。谢谢马丁 参考方案 Java序列化(ObjectOutputStream / ObjectInputStream)是将对象序列化为八位字节序列的一种通用方法。但…

Java-如何将此字符串转换为日期? - java

我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…

Java:从类中查找项目名称 - java

仅通过类的实例,如何使用Java反射或类似方法查找项目名称?如果不是,项目名称(我真正想要的是)可以找到程序包名称吗? 参考方案 项目只是IDE使用的简单组织工具,因此项目名称不是类或JVM中包含的信息。要获取软件包,请使用Class#getPackage()。然后,可以调用Package#getName()将包作为您在代码的包声明中看到的String来获取…