【问题标题】:How to determine the XPATH of Android UI elements. Selenium + Appium如何确定 Android UI 元素的 XPATH。硒 + Appium
【发布时间】:2014-08-01 17:46:35
【问题描述】:

我目前正在使用 Appium 和 Selenium 自动化一个 android 应用程序,并且在通过 ID 定位元素时遇到了一些问题。我想使用 XPATH 但不知道如何获取 android UI 元素的 XPATH。有谁知道如何确定元素的 XPATH 或知道可以快速完成这项工作的工具?谢谢!

【问题讨论】:

    标签: android xpath selenium-webdriver automation appium


    【解决方案1】:

    您可以使用 android sdk 工具 - uiautomatorviewer(https://developer.android.com/tools/testing/testing_ui.html),它类似于 appium 检查器,但对我来说效果更好。

    【讨论】:

      【解决方案2】:
      com.android2.calculator3:id/digit8
      

      对于具有 id 的元素

      driver.findElement(By.id("com.example.testapp:id/txtLogin"))
      

      对于具有类的元素

      android.widget.EditText[@index=0]
      

      语法

      {ClassName}[@{anyAttributeName}={valueOfAttribute}]
      

      代码

      driver.findElements(By.className("android.widget.EditText"));//will return ARRAY
      

      【讨论】:

      • 您应该使用 UIautomatiorviewer 来查找应用程序的确切元素或布局。
      【解决方案3】:

      有一种方法可以找出 xpath。首先从应用程序中获取页面源。这将是 xml 格式。然后将源代码复制到 xpath 测试器网站,例如 xpath tester。然后创建 xpath 并检查它是否有效。这是假设您已经知道如何创建 xpath。

      【讨论】:

      • 你能解释一下如何使用 xpath 测试器吗?
      【解决方案4】:

      Appium's client comes with an Inspector tool! 这将告诉您您感兴趣的任何元素的 xpath

      【讨论】:

        【解决方案5】:

        尝试查看源代码:

        https://android.stackexchange.com/questions/5039/how-do-i-view-source-in-the-android-browser

        然后从那里找出 xpath 变得更容易。

        【讨论】:

          【解决方案6】:

          您可以使用 Android SDK 中的 UIAutomatorviewer 实用程序来获取所需的定位器。转到您的 Android SDK 安装的“工具”文件夹并触发 uiautomatorviewer.bat 文件。从那里,您可以找到应用元素。

          访问此链接,了解如何使用它。

          http://www.testingdiaries.com/locate-android-app-elements/

          【讨论】:

          • 请将链接页面中的一些信息添加到您的答案中,因为如果链接停止工作,您的答案将几乎一文不值
          【解决方案7】:

          在您的手机中启用开发者选项并连接您的手机并为 android 设备调用 chrome 检查器(类型 -- about:inspect in chrome )您的设备将被显示。

          只需点击检查按钮,手机屏幕就会显示出来。 为您提供了应用程序和完整的 DOM 结构。从中创建您自己的 XPATH。

          【讨论】:

            【解决方案8】:

            你可以这样使用它:

            WebElement btn_yes = driver.findElement(By.xpath("//android.widget.Button[@text='Yes']"));
            

            【讨论】:

              猜你喜欢
              • 2016-10-08
              • 1970-01-01
              • 2018-03-15
              • 1970-01-01
              • 2013-08-23
              • 2014-11-27
              • 1970-01-01
              • 1970-01-01
              • 2016-01-19
              相关资源
              最近更新 更多