使用 appium 访问 Android 设置中的切换按钮,而客户端是用 groovy 和 java 编写的

Posted

技术标签:

【中文标题】使用 appium 访问 Android 设置中的切换按钮,而客户端是用 groovy 和 java 编写的【英文标题】:Access toggle button in Android settings using appium whlie client is written in groovy and java 【发布时间】:2017-01-21 22:30:16 【问题描述】:

这不是重复的。

我正在Appium 中编写自动化。我对自动化概念很陌生,Appium 它自己。我正在使用 java-client。

我有一个场景,我正在为其编写自动化的 android 应用程序必须获得 android 权限。我的应用程序导航到Android Settings的以下设置页面,如下所示。

为了自动点击此页面,我创建了一个代表此屏幕的页面对象。在这种情况下,我只对切换 Switch 并了解如何获取它的状态感兴趣。

我可以获取UI Automator Viewer 的资源 ID,类似这样。

所以我的初始化是这样访问开关小部件的。

SwitchID  $("#switchWidget") 

显然,当我运行功能文件时,Appium 无法找到此开关小部件。但是我可以在我正在处理的应用程序中自动化其他小部件。但我无法在这个 android 的设置屏幕上得到任何东西。

任何帮助都会受到高度重视。 谢谢

【问题讨论】:

需要了解您正在关注的 POM 以及您的应用程序如何访问小部件。在这方面,问题中的信息非常少。 【参考方案1】:

您可以访问 UI 上的任何可见组件。无论是按钮/开关还是其他。 有几种方法可以使用 Appium/Selenium 驱动程序访问元素 - 按名称/id/xpath 等。 使用 UIAutomator 捕获该可见元素的 id/name/content desc 就完成了! 在您的情况下,正如我在 UIAutomator 屏幕截图中看到的那样 - 您同时获得了 id 和 name。因此,您可以使用它们中的任何一个来单击所需的元素。 (可以参考Appium的相关groovy/java语法)http://appium.io/introduction.html

【讨论】:

【参考方案2】:

使用 java-client 我可以通过类名获得开关。像这样的东西: driver.findElement(By.className("android.widget.Switch"))

不确定 groovy 客户端,但可能类似。

【讨论】:

谢谢 TinyTimZamboni【参考方案3】:

如果开关已经被选中怎么办?如果你点击你会禁用它...

试试:

driver.find_element_by_xpath("//android.widget.Switch[@resource-id='android:id/switchWidget' and @checkable='true']")

这只会在可检查时获取您的元素

【讨论】:

以上是关于使用 appium 访问 Android 设置中的切换按钮,而客户端是用 groovy 和 java 编写的的主要内容,如果未能解决你的问题,请参考以下文章

如何解决使用 Appium 测试 Android 应用时出现的错误“appium-uiautomator2-server-debug-androidTest.apk'不存在或不可访问”?

findElement 在 Android 上的 Appium 中不起作用

在 appium 中启动检查器后不显示 android 的 UI 内容

如何为 Android 自动化设置 Appium 环境?

appium如何打开Genymotion(android)中的UC浏览器

如何在 Mac OS 上设置 Appium 以在 Android 和 iOS 设备上运行来自 JAVA 类的自动化测试