如何使用appium access/test android action bar?

How to access/test android action bar using appium?

我正在尝试编写自动化测试来测试 Android 操作栏的元素(例如菜单图标、搜索图标...选项)。我想执行基本操作,例如单击这些图标,然后从选项菜单项中选择子项,或者在操作栏中选择搜索图标后键入文本。

有什么方法可以访问这些元素吗?

我会告诉你我对 Appium 的一些了解。我不认为有任何直接的区别可以告诉您它是一个操作栏。您可以做一些事情:

  1. 您可以使用driver.getPageSource()检查页面源代码,并搜索屏幕中是否存在操作栏(这仅适用于应用程序使用标准操作栏,在这种情况下它会包含 'android.support.v7.app.ActionBar' 元素。这只是你的问题的一部分,这不适用于具有自定义操作栏的应用程序(这在应用程序中很常见)。
  2. 因此,一旦您发现该应用包含操作栏,您就需要获取该操作栏的访问元素。同样,我认为 Appium 中没有任何标准 API 告诉您这是搜索按钮或菜单按钮。它们只是 appium 的普通图像视图,您所能获得的只是这些图像视图的资源 ID 或内容描述或其他属性,如可点击、启用等。

    String resourceId = element.getAttribute("resourceId");
    

    String contentDesc = element.getAttribute("name");

然后您可以将 contentDesc 与一些预定义的模式(例如 'More Options' 用于菜单选项视图,'Search' 用于搜索视图。)匹配这些后,您可以假设您已经找到了您的元素并可以使用 web 元素的 click 方法单击它。 您也可以使用键码 82,如果应用程序支持使用硬菜单键的选项菜单,它将打开。

driver.pressKeyCode(AndroidKeyCode.MENU);

选项菜单子项也是如此(您可以获取所有网络元素,就 Android 而言,它可以是按钮、文本视图、图像视图、编辑文本等,但我不要认为有任何方法可以从总列表中过滤掉选项菜单中的子项)。另一种方法可能是将较早的页面源代码与更新后的页面源代码进行比较,以观察单击选项菜单视图后的变化。单击搜索按钮时可以使用相同的方法,您可以检查 'SearchView' 的页面源以确保操作栏中存在一个搜索视图,您可以在其中键入查询文本。

正如我之前所说,可能有更好的方法来完成这项任务,如果有人发布更好的答案对所有人都有帮助,我将不胜感激。