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

这不是重复的。

我在Appium写自动化。 我对自动化概念和它自己的Appium相当新。 我正在使用java-client。

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

在此处输入图像描述

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

我可以获得UI Automator Viewer的资源ID。

在此处输入图像描述

所以我的初始化是这样的,以访问交换机Widget。

 SwitchID { $("#switchWidget") } 

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

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

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

使用java-client我会按类名获得切换。 像这样: driver.findElement(By.className("android.widget.Switch"))

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

如果已经检查了开关怎么办? 如果你点击你将禁用它…

尝试:

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

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