当前位置: 首页 > 知识库问答 >
问题:

uiautomator dump返回上一屏幕的转储

濮丰
2023-03-14

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

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

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

有什么线索可以让我解决这个问题吗?

谢谢,阿瑟

共有2个答案

郗浩
2023-03-14

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

隐含的

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

明确的

WebElement Elementid = (new WebDriverWait(driver, 10))
  .until(ExpectedConditions.presenceOfElementLocated(By.id("Elementid ")));
黎奇略
2023-03-14

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

我不知道与这个问题相关的根本原因─像上一个一样转储一个。然而,当切换时,它将明显地检索当前视图层次。

 类似资料:
  • 我有一个活动叫做。我从MapsActivity开始参加这个活动。然而,在上运行几秒钟后,它会返回到,而我什么也不做。我需要修复它,但我不确定为什么会发生。 我正在尝试更新数据库: Locker对象使其在此处不可用(其唯一id已从传递到此处), 我正在复制下面的代码: 日志中没有例外:我有这个:2020-02-11 22:35:30.211 10084-10127/android。比格纳德兰奇。pr

  • 可能重复如何关闭活动并返回到android中的上一个活动 问题是,我在当前使用的方法末尾添加finish(),整个应用程序就会关闭。 我希望通过按下手机上的后退按钮(我不想在应用程序中添加后退按钮)将其返回到上一个屏幕 我想从secondScreen()返回main

  • 我正在使用类似于创建简单通知的代码来创建和显示来自网络调用的通知。 问题是,我希望响应通知的活动做它的业务,然后单击backbutton将以前活动的活动放回前台,其背面堆栈保持不变。这是不考虑之前的活动是我的应用程序的一部分或其他人。 当前它正在跟踪生成的TaskStackBuilder。将其引导到应用程序层次结构上,并输出到主屏幕。这是糟糕的UI设计,因为它打破了任何人使用设备的工作流程,迫使他

  • 我有一个运行良好的Android应用程序,但我发现了一个恼人的bug,我不知道还能做些什么来解决它。 我的应用程序只有一个活动(称之为HomeActivity;加上Preferences活动)和许多片段。HomeActivity使用此方法管理每个片段的替换(可在此线程中找到,尤其是查看以下注释): 要替换一个片段,我要做的是以下操作: 问题就在这里:我浏览了几个Fragments(比如说,其中的3

  • 本文向大家介绍Vue移动端右滑屏幕返回上一页附源码下载,包括了Vue移动端右滑屏幕返回上一页附源码下载的使用技巧和注意事项,需要的朋友参考一下 有些时候我们玩手机更喜欢使用手势滑动带来的用户操作体验。Vue touch directive是一个用于移动设备操作指令的轻量级的VUE组件。使用它可以轻松实现屏幕触控、滑动触发事件,提高用户体验。本文结合实例讲解如何实现Vue移动端右滑屏幕返回上一页。

  • 在屏幕旋转后,虽然我在super.onCreate(null);,中传递null,但我得到了object返回的nullPointerException异常。我知道在传递savedInstanceState=null的同时必须销毁并重新创建活动,这意味着活动应该在旋转后开始,因为它是第一次开始,为什么在旋转后会出现此异常? onCreate()代码段,其中名为historyText的对象 Logca