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

Access toggle button in Android settings using appium whlie client is written in groovy and java

It's not a duplicate.

我正在 Appium 编写自动化。我对自动化概念相当陌生,Appium 它本身。我正在使用 java-client.

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

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

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

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

SwitchID { $("#switchWidget") }

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

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

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

使用 java-client 我会通过 class 名称获得开关。是这样的: driver.findElement(By.className("android.widget.Switch"))

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

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

尝试:

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

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