gpt4 book ai didi

swift - iOS 14/UI 测试 DatePicker

转载 作者:行者123 更新时间:2023-12-04 08:54:03 26 4
gpt4 key购买 nike

我正在努力修复在 DatePicker View 上设置日期的 iO​​S 14 UI 测试。当它们显示为轮选择器时,它们以前在 iOS 13 上运行没有任何问题。我的代码用于设置不同的轮子,但由于 iOS 14 上不再有任何轮子,这不再起作用。
我尝试使用一个小型演示项目并使用 XCode 12 记录按钮记录日期的更改,但由于错误而无法正常工作(在 Mac OS 10.15.6 上):“时间戳事件匹配错误:找不到匹配元素”后按下日期按钮。
我正在寻找的是一个 UI 测试用例,用于为 iOS 14 的新日期选择器设置日期:
enter image description here
这是我的演示项目:

import SwiftUI

struct ContentView: View {
@State private var date = Date()

var body: some View {
Form {
DatePicker(selection: $date, displayedComponents: .date) {
Text("Date")
}
}
}
}

最佳答案

问题仅在于如何在展开的选择器之外点击以关闭它。您可以通过简单的点击来做到这一点,您可以使用扩展程序进行模拟:

extension XCUIApplication {
func tapCoordinate(at point: CGPoint) {
let normalized = coordinate(withNormalizedOffset: .zero)
let offset = CGVector(dx: point.x, dy: point.y)
let coordinate = normalized.withOffset(offset)
coordinate.tap()
}
}
这是一种基于录音的有点幼稚的方法;您可以根据需要清理它:
func testExample() throws {
let app = XCUIApplication()
app.launch()
XCTAssertTrue(app.cells["Date, Date Picker, Sep 24, 2020"].exists)
app.tables.datePickers.containing(.other, identifier:"Date Picker").element.tap()
app.datePickers.collectionViews.buttons["Friday, September 4"].otherElements.containing(.staticText, identifier:"4").element.tap()
app.tapCoordinate(at: CGPoint(x:30,y:30))
XCTAssertTrue(app.cells["Date, Date Picker, Sep 4, 2020"].exists)
}
当然,这只适用于今天。但它会让你前进。
如果您想看到关闭点击工作,请添加延迟:
    app.tapCoordinate(at: CGPoint(x:30,y:30))
let delayExpectation = XCTestExpectation()
delayExpectation.isInverted = true
wait(for: [delayExpectation], timeout: 1)
您将看到扩展的选择器确实在测试结束之前关闭。

关于swift - iOS 14/UI 测试 DatePicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63935026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com