带时间戳的事件匹配错误:无法找到匹配的元素


93

我正在尝试在Xcode中生成UItest。当我尝试滑动UIview时出现错误:

Timestamped Event Matching Error: Failed to find matching element

错误窗口

在此处输入图片说明

如果我尝试点击UIView,也会发生这种情况。


你能解释更多吗?
Dieter Meemken '16

我尝试滑动或点击应该做某事的UIview(具有手势调整器),但是当我做手势时,会发生此错误。我努力使它起作用的唯一方法是查询,但它确实很复杂,并且肯定还有另一种方法
shay

Answers:


47

您应该验证要从中滑动的UIView对象的“可访问性”选项是否已启用,例如:

在此处输入图片说明


1
解决WebView中的文本时,为WebView启用辅助功能使我的测试失败。为承载WebView的UIView关闭“辅助功能”使测试成功。所以要当心。
askielboe '16

1
为了让它对我
有用,

我发现这篇文章对于使用fastlanetableView的屏幕截图很有帮助。stackoverflow.com/a/39331154/4475605
Adrian

这是哪里 我该如何设置?
Cory McAboy '18

@CoryMcAboy,您可以从代码中为您的自定义视图进行设置:isAccessibilityElement = true
Gleb Tarasov,

14

通常,当要记录的元素的父元素设置为isAccessibilityElement = true时,会观察到此问题。通常,必须将父元素设置为false才能访问子元素。例如:如果视图中有UILabel,则该视图的可访问性应设置为false,而UILabel的可访问性应设置为true。


1
这是完全可复制的。如您所说,将父元素设置为isAccessibilityElement = true无效!在我将其切换回false之后,它再次起作用。
pommes

3

在Xcode 9.3中,这显然仍然是一个问题,我所做的是:

  • 退出Xcode
  • 重置模拟器的设置(硬件->删除所有内容和设置)
  • 退出模拟器
  • 删除当前应用程序的派生数据
  • 重新启动Xcode
  • 再次尝试录制-这次对我来说有效。

我已经为按钮提供了标识符“ skipButton”,并且在识别按钮时总是用到失败,我将按钮识别为app.buttons [“ skipButton'],感谢您的帮助
Sujit Baranwal

这些步骤对我不起作用。实际上,以前未受该问题影响的小部件已受到影响。
Geoff S

为什么没有内容?
乌鸦

2

对于录制新测试,我认为还没有解决方案。但是,如果您将扩展强制分接与已经存在的测试一起使用,则可以使用。

使用示例:

extension XCUIElement {

    func forceTapElement() {
        if self.hittable {
            self.tap()
        }
        else {
            let coordinate: XCUICoordinate = self.coordinateWithNormalizedOffset(CGVectorMake(0.0, 0.0))
            coordinate.tap()
        }  
    }
}

func testSomethingWithCells() {

   let app = XCUIApplication()
   let cells = app.tables.cells
   sleep(1)
   cells.elementBoundByIndex(0).forceTapElement()
}

您可以在此处查看原始帖子:

Xcode用户界面测试-用户界面测试失败-点击搜索字段“取消”按钮时,无法滚动到可见(通过AX操作)


elementBoundByIndex”已重命名为“ element(boundBy :)”,例如:cells.element(boundBy:0).tap()
Sujananth 18'3

2

我偶尔遇到这个问题。从DerivedData删除应用程序的目录似乎有所帮助。


1

对我自己有用的解决方案是以不同方式标识对象。
在Xcode 8中,我可以使用以下代码:

XCUIApplication().tables.cells["Camera Roll"].buttons["Camera Roll"].tap()

使用Xcode 9,我得到了这个问题中提到的错误。最终使用了下面的方法,效果很好(虽然比原始选项有更多的火焰)

XCUIApplication().cells.element(boundBy: 1).tap()

测试功能中的@Developer
Huy-Anh Hoang
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.