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

Appium无法识别屏幕上的元素,即使这些元素是使用initElements初始化的

微生高谊
2023-03-14

我在真实的设备上启动应用程序,登陆主屏幕,主屏幕元素没有被ANDROID设备中的appium识别。我试着点击右上角的帮助图标。

注意,在任何主屏幕元素上执行动作是间歇性的

//下面是Home page object screen的构造函数,它在我登录后被调用。

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("coios6@yopmail.com");
        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)]调用AppiumDriver.findElements(),参数:[“id”,“com.payu.payunow:id/frag_home_help_imgview_id”,“6FBDDB32-3EE5-4237-beee-c0496d88e69e”][BaseDriver]此请求的有效定位器策略:xpath,id,类名,可访问性id,-Android uiautomator[BaseDriver]等待条件[AndroidBootstrap]最长5000 ms发送命令到Android:{“cmd”:“ACTION”,“ACTION”:“find”,“params”:{“strategy”:“id”,“选择器”:“com.payu.payunow:id/frag_home_help_imgview_id”,“context”:“”,“multiple”:true}}[AndroidBootstrap][BOOTSTRAP LOG][debug]从客户端获取数据:{“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]命令操作:find[AndroidBootstrap][BOOTSTRAP LOG][debug]使用“id”wi查找“com.payu.payunow:id/frag_home_help_imgview_id”th上下文ID:“多个:true[AndroidBootstrap][BOOTSTRAP LOG][debug]使用:uiselector[resource_id=com.payu.payunow:id/frag_home_help_imgview_id][AndroidBootstrap][BOOTSTRAP LOG][debug]getElements选择器:uiselector[resource_id=com.payu.payunow:id/frag_home_help_imgview_id][AndroidBootstrap][BOOTSTRAP LOG][debug]为null:(0)[AndroidBootstrap][BOOTSTRAP LOG][debug]getElements tmp选择器:uiselector[instance=0,resource_id=com.payu.payunow:id/frag_home_help_imgview_id][AndroidBootstrap][BOOTSTRAP LOG][debug]找不到元素。正在清除辅助功能缓存并重试。[AndroidBootstrap][BOOTSTRAP日志][debug]使用“id”使用上下文ID:“multiple:true”查找“com.payu.payunow:id/frag_home_help_imgview_id

共有1个答案

全宪
2023-03-14

尝试等待,直到元素被启用。您可以使用WebDriverWait类。wait.until(expectedconditions.ElementToBeclickable( ), ));

 类似资料:
  • 我正在尝试使用UISelector找到一个位于可见屏幕空间(又名viewport)之外的TextView小部件: 当我尝试与这样的元素交互时,结果是以下消息: 逻辑结论将是元素不存在或者我的定位器策略是错误的。但问题是,当我更改文本以查找可视空间/视口内的元素时,定位器工作得完美无缺。示例: 这是UiSelector和textContains()的工作方式吗?这是另一种解决方案吗? 多谢。

  • 在使用Appium Inspector检查Android应用程序时,上一屏幕中的一些元素也会被检查,并出现在元素层次结构中。 该应用程序基于react native构建。

  • 我使用的是Appium 1.6.5设备:iPod iOS版本:10.3.3 我无法使用Appium inspector识别元素。我点击任何对象,整个框架被选中。我无法唯一地识别每个元素。请参考下图了解问题的实际表示。 请帮我解决这个问题

  • 我正在android的clock应用程序上尝试一段appium自动化代码,但我的代码倾向于跳过滚动逻辑。我还尝试了findelement()和gettext()来标识该元素,但仍然没有成功。代码如下:

  • 自定义对象标识 Appium检查器无法找到其父元素的子元素。