【问题标题】:Appium: Any work around to use ids of an element to automate the appAppium:使用元素的 id 来自动化应用程序的任何解决方法
【发布时间】:2014-01-14 00:35:58
【问题描述】:

我正在使用 Appium 测试移动应用程序。当我使用 xpath 时,它工作正常,但我无法处理该应用程序的 ID。

//This is working fine

remoteDriver.findElementByXPath("/linear[1]/window[2]/linear[1]/linear[1]/linear[2]/linear[1]/text[2]").click(); // Click on signIn button 

// This doesn't recognize the element

remoteDriver.findElementById("ButtonSignIn").click(); // Click on signIn button

如果有人有使用 id 的 appium 经验,请分享你的经验。

谢谢

【问题讨论】:

    标签: java android selenium-webdriver appium


    【解决方案1】:

    只有 android API 级别 18 或以上(Jelly Bean)才能使用 Id。如果您使用 uiautomatorviewer ,那么在节点详细信息中您将看到“resource-id”,它可以轻松用于自动化应用程序,但相同的 id 不适用于 android API 级别 https://github.com/appium/appium/blob/master/docs/finding-elements.md

    【讨论】:

      【解决方案2】:

      Appium "id" 与 Android Resource Id 相关,可以这样访问:

      remoteDriver.findElementById("com.exampleCompany.appName:id/ButtonSignIn").click();
      

      我在 Appium 中使用 ID 时遇到的一个问题是 ListView。因为列表是在 Android 中“动态”创建的,所以每一行实际上都具有相同的 Android 资源 ID,即使从用户的角度来看,每一行都填充了不同的内容。

      如果您发现您的按钮是 ListView 的一部分,这就是它们无法访问的原因,您可以通过在每行创建时动态设置内容描述符来解决此问题,然后通过 Appium 使用“按名称查找元素。”

      【讨论】:

        【解决方案3】:

        仔细检查正在使用的 ID。 ID 不应为“ButtonSignIn”,而应为“com.company.app:id/ButtonSignIn”。

        调用应该是:

        remoteDriver.findElementById("com.company.app:id/ButtonSignIn").click();
        

        基本上,如果 layout.xml 文件使用 android:id="@+id/ButtonSignIn" 指定按钮的 ID(并且您的应用程序是 com.company.app),那么在您的测试中您应该使用“com. company.app:id/ButtonSignIn" 而不是 "ButtonSignIn"。

        同样,通过 ID 查找应该适用于 Appium,因为它使用支持它的 Selendroid。

        【讨论】:

          【解决方案4】:

          我使用 FindElementsByClassName("abc.widget.EditText") (例如)或 FindElement(By.Name("Continue") 而不是 ids

          类名很好用...如果页面上超过 1 个...只需选择您需要的那个的索引值。例如: 文本字段[1].Sendkeys("1234")

          【讨论】:

            【解决方案5】:

            我一直在使用 findElement(By.id("")) 。 例如:

            remoteDriver.findElement(By.id("ButtonSignIn")).click();
            

            到目前为止,它对我来说一直很好。

            【讨论】:

              【解决方案6】:

              使用android uiautomatorviewer获取正确的android element id。点击以下链接:

              Can we find element by ID in appium

              【讨论】:

                猜你喜欢
                • 2018-10-25
                • 2018-11-20
                • 1970-01-01
                • 2020-09-28
                • 2014-09-25
                • 1970-01-01
                • 1970-01-01
                • 2021-11-28
                • 2015-11-12
                相关资源
                最近更新 更多