【问题标题】:UIAutomation logElementTree() returns UIAElementNilUIAutomation logElementTree() 返回 UIAElementNil
【发布时间】:2013-01-05 10:53:30
【问题描述】:

当我们这行代码到 Instruments UIAutomation target.frontMostApp().mainWindow().logElementTree(); 中的 logElementTree() 时

结果返回是UIAElementNil

即使我录制脚本并点击屏幕时,唯一被录制的行是target.frontMostApp().tap();

【问题讨论】:

  • 你有没有用这个发财...

标签: instruments ui-automation xcode-instruments


【解决方案1】:

您可能已启用主视图的辅助功能。
如果您为主视图提供可访问性标签,那么您将不会获得子视图的可访问性标签。尝试删除主视图的可访问性,您将获得完整的层次结构。

【讨论】:

    【解决方案2】:

    不要设置isAccessibilityElement = YES。如果这样做,则该元素的子视图将被隐藏。

    你应该设置accessibilityItentifier = @"xxxx"; isAccessibilityElement = NO;

    【讨论】:

    • 不设置什么?应用程序窗口?
    【解决方案3】:

    不要使用“target.frontMostApp().mainWindow().logElementTree();”,而是始终使用“target.logElementTree()”。它将显示当前屏幕上存在的所有元素。

    【讨论】:

    • 这行不通,它现在只记录应用程序的名称 'UIAApplication: name:MyApp rect:{{1024, 0}, {0, 0}}' 我无法深入了解层次结构
    • 你能告诉你为什么你不能深入层次结构吗?如果这是您唯一能看到的,只需在所需屏幕出现之前添加延迟,然后执行“target.logElementTree()”。试试这个,希望它对你有用,或者具体恢复一些细节。
    • UIALogger 结果旁边没有箭头可向下钻取
    • target.logElementTree()在所需屏幕上执行之前添加延迟,确保延迟足够,以便所需屏幕先出现然后target.logElementTree()执行。
    【解决方案4】:

    不要使用target.frontMostApp().mainWindow().logElementTree(); 而不是你的代码替换它:

    var target = UIATarget.localTarget();
    target.logElementTree();
    

    【讨论】:

      猜你喜欢
      • 2015-05-04
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 2016-07-29
      • 1970-01-01
      • 2016-08-28
      • 1970-01-01
      相关资源
      最近更新 更多