使用 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 内容