【问题标题】:Android popupwindow not seen by AppiumAppium看不到Android弹出窗口
【发布时间】:2019-07-10 22:45:15
【问题描述】:

我有一个带有几个弹出窗口的本机 android 应用程序,我正在尝试为使用 Webdriverio 和 Appium 创建自动化测试。我尝试使用不同的选择器(Id、class 等)与弹出窗口中的元素进行交互,但似乎 Appium 找不到它们。

当我在 Appium 桌面中使用检查器时,它看不到元素,但它们确实显示在它显示的屏幕截图中。然后我尝试使用 http://localhost:4723/wd/hub/session/session-id/source 直接从 Appium 获取 xml,而我返回的 xml 也没有弹出窗口。

我查看了 appium 表单,发现了一些类似的问题,但没有有效的答案。

如何让 appium 看到弹出窗口?

编辑:在打开弹出窗口的应用上使用 Android Studio 布局检查器时,您可以从两个窗口中选择一个是应用,一个是弹出窗口。我不知道如何通过 appium 做到这一点,但它可能是一个线索

【问题讨论】:

  • 我认为有一种解决方法可以让您在最小化应用程序并恢复它时检测弹出元素。让我知道这是否有效:)
  • @Angusiasty 感谢您的回答。我试过了,但是一旦我最小化应用程序就会关闭弹出窗口,所以这个解决方法在我的情况下不起作用

标签: appium webdriver-io appium-android


【解决方案1】:

很遗憾,你运气不好。

This issue 已存在多年,而 google 似乎并不在意。

作为我的一个项目中的一种解决方法,我在下拉列表中保留了所有可能值的列表,并通过按箭头键并输入来选择它们。

mobileDriver.pressKey(new KeyEvent(AndroidKey.DPAD_DOWN));
mobileDriver.pressKey(new KeyEvent(AndroidKey.ENTER));

【讨论】:

  • 感谢您的回答。我有一些弹出窗口,其中包含在运行时生成的值,因此我无法保留所有可能值的列表。我还有一些无法通过箭头键和输入方法访问的弹出窗口。您还有其他想法吗?
  • 我的意思是他们不在那里
  • 如果您无法使用 dpad,您只能按坐标单击。这将使您的测试难以维护。至于元素列表,如果您没有,您可以:更改应用程序实现,确定应用程序的这一部分不可测试,创建可以为您提供值的 API。
  • 谢谢。我想除非我弄清楚 Android Studio Layout Inspector 的事情,否则我将不得不看看这些选项中的哪一个
【解决方案2】:

首先,android developermant 中的弹出窗口称为“Toast”。(短消息)

MobileElement toast = driver.findElement(By.xpath("//android.widget.Toast[1]"));
System.out.println(toast.getText());

选择器适合 100%。您可以使用它或只使用“//android.widget.Toast”。

【讨论】:

    【解决方案3】:

    Ivan Pronin's Response 是唯一对我有用的。我有一个类似的问题,即 PopupWindow 类/视图无法直接从我的应用程序的上下文中访问。切换到“NATIVE_APP”上下文(同时保存当前上下文)允许我访问该 PopupWindow 中的元素。然后我就能够切换回我的应用的上下文以继续测试我的应用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      • 2012-04-14
      • 1970-01-01
      相关资源
      最近更新 更多