UI 测试:滑块嵌套在 Table View Cell 中时无法调整

UI Testing: Slider fails to adjust when nested in Table View Cell

在 Xcode 9.0 (9A235) 上的 UI 测试中,当 UISlider 嵌套在 UISlideradjust(toNormalizedSliderPosition:) 的交互中根本不起作用UITableViewCell.

我已经在许多不同的场景中进行了测试: - 未嵌入 UITableView 的正常 UISliders 可以与 adjust 方法一起正常工作。 - UISliderUITableView 共存但不在 Table 内 View Cell 继续与 adjust 一起工作 - UISlider中的UITableView可以唯一标识。 - 在 UITableView 中标识的 UISlider 可以响应像 tap() 这样的简单事件 - UITableView 中标识的 UISlider 根本不适用于 adjust 方法,即使我将行数修改为 1。错误消息是:

Failure fetching attributes for element pid: 24415, elementOrHash.elementID: 106102876671744.43: Error Domain=XCTDaemonErrorDomain Code=13 "Fetching value for attribute 5011 returned AX error -25205." UserInfo={NSLocalizedDescription=Fetching value for attribute 5011 returned AX error -25205.}

网上找到的相关讨论: https://forums.developer.apple.com/thread/77445

我也上传了my code online,有兴趣的可以看看

我已经就此向 Apple 提交了 bug report。我要问的是,当滑块嵌套在 UITableViewCell 中时,有人知道我可以用来调整 UISlider 值的可能解决方法吗?谢谢!

您可以使用此作为解决方法:

func testSliderAdjustsInTableView() {
    let app = XCUIApplication()

    app.staticTexts["Slider in Table View UI Test"].tap()

    let cell = app.tables.element.cells["cell 0"]
    let button = cell.buttons["Test Button"]
    button.tap()

    let slider = cell.sliders["value slider"]
    XCTAssert(slider.exists)

    let fiftyPercent = slider.coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.5))
    let ninetyPercent = slider.coordinate(withNormalizedOffset: CGVector(dx: 0.9, dy: 0.5))

    fiftyPercent.press(forDuration: 0.1, thenDragTo: ninetyPercent)

    XCTAssertEqual(slider.value as! String, "90 %")
}