【问题标题】:uiautomator dump returns dump of previous screenuiautomator dump 返回前一屏幕的转储
【发布时间】:2016-05-09 13:23:35
【问题描述】:

我正在尝试使用 appium 来测试第 3 方应用。在检查屏幕上是否存在元素时,appium 无法找到该元素,即使它存在于屏幕上。

尝试了以下作为根本原因的一部分:
1. 使用 Appium 驱动 getpageSource() 获取页面 xml 层次结构。这将返回上一个屏幕的 xml 转储
2. 使用 Android 的 uiautomator dump 获取页面 xml 层次结构。这也返回与 appium 输出相同的内容。

其他观察:
1.这种行为不一致。有时,会找到该元素。在其他时候,它不是。
2.当我尝试通过hierarchyviewer检查层次结构时,xml转储是当前页面而不是前一个页面。这几乎表明层次结构查看器以不同于 uiautomator 的方式获取 xml 转储。

关于如何解决此问题的任何线索?

谢谢, 阿尔西

【问题讨论】:

  • 这是应用程序中 web 视图附近的某个地方吗?
  • 没有。有 webviews,但即使在没有 webview 的屏幕中也会出现错误。
  • 我注意到 Appium 并不总是能获取当前页面。最好的解决方法是使用等待 (seleniumhq.org/docs/04_webdriver_advanced.jsp)

标签: android appium android-testing android-uiautomator


【解决方案1】:

如果您使用UiDevice 进行测试, 只需切换setCompressedLayoutHierarchy()

我不知道与此问题相关的根本原因 ─ 转储一个与前一个相同。然而,当切换它时,它显然会检索当前的视图层次结构。

【讨论】:

    【解决方案2】:

    尝试使用隐式或显式等待,因为它们是间歇性的

    隐式

     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    

    显式

    WebElement Elementid = (new WebDriverWait(driver, 10))
      .until(ExpectedConditions.presenceOfElementLocated(By.id("Elementid ")));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      • 2021-01-24
      相关资源
      最近更新 更多