Xcode UI 在点击单元格时测试 XCTDaemonErrorDomain Code=13

Posted

技术标签:

【中文标题】Xcode UI 在点击单元格时测试 XCTDaemonErrorDomain Code=13【英文标题】:Xcode UI test XCTDaemonErrorDomain Code=13 while tapping on a cell 【发布时间】:2018-02-09 11:09:17 【问题描述】:

我有以下 Xcode UI 测试代码,一周前通过,但现在出现错误

let cellsQuery = app.cells.matching(identifier: "identifier")
XCTAssertGreaterThan(cellsQuery.count, 0)
let cell = cellsQuery.element(boundBy: 0)
expectElementToExist(cell)
cell.tap()

final func expectElementToExist(_ element: XCUIElement, exist: Bool = true, timeout: TimeInterval = 10) 
    let predicate = NSPredicate(format: "exists == \(exist)")
    expectation(for: predicate, evaluatedWith: element, handler: nil)
    waitForExpectations(timeout: timeout, handler: nil)
    XCTAssertEqual(element.exists, exist)

我在cell.tap() 中得到的错误如下

Failure fetching attributes for element <XCAccessibilityElement: 0x604001a75240> pid: 5387, elementOrHash.elementID: 105553123110000.1888: Error Domain=XCTDaemonErrorDomain Code=13 "Error copying attributes -25202" UserInfo=NSLocalizedDescription=Error copying attributes -25202

任何帮助将不胜感激

【问题讨论】:

我已经为此添加了答案。请使用代码并让我知道您的反馈 【参考方案1】:

最近我在将我的项目(Swift 3.2)升级到 XCode 9 后也遇到了类似的问题。

问题是

 cell.isHittable is returning false. 

这就是为什么默认的 tap() 方法不适用于分层元素。

我刚刚完成了以下程序,效果很好。

第 1 步:创建如下所示的扩展程序

extension XCUIElement 
func tryClick() 
    if self.isHittable 
        self.tap()
    
    else 
        let coordinate: XCUICoordinate = self.coordinate(withNormalizedOffset: CGVector(dx:0.5, dy:0.5))
        coordinate.doubleTap()
        //coordinate.press(forDuration: 0.5)
    
  

第 2 步: 使用上面创建的实例方法而不是使用直接的 tap() 方法单击元素。

cell.tryClick()

注意:尝试使用

CGVector(dx:0.5, dy:0.5) or CGVector(dx:0.0, dy:0.0)

希望它能解决您的问题。它对我来说就像一种魅力。

【讨论】:

不幸的是,这不起作用,cell.isHittable 正在返回true。省略if self.isHittable 检查并强制使用坐标会产生相同的错误。 你尝试使用 0.5 或 0.0 坐标??也请检查一下 那么请检查你试图点击的元素是不是精确的元素? 那么请检查你试图点击的元素是不是精确的元素? 是的,它是确切的元素。我刚刚发现它与我在willDisplay cell 方法中的加载更多逻辑有关。尽管如果我将其注释掉所有测试都通过,它不会在测试场景中被调用....

以上是关于Xcode UI 在点击单元格时测试 XCTDaemonErrorDomain Code=13的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Xcode UI 测试中点击表格单元格

ui测试xcode,如何使用cellquery点击表格视图单元格按钮

Swift UI 列表:点击单元格时打开外部 URL

如何编写 UI 测试来测试单击 UITableView 中的第一个单元格时图像是不是存在?

设置 UI 测试 Xcode 7 后单元测试永远不会运行

Xcode UI 测试发现多个按钮