是否可以在 XCUIElementQuery 中使用正则表达式按标签匹配 UI 元素?
Is it possible to match UI elements by labels using regex in XCUIElementQuery?
我目前正在学习如何在 XCode 中创建 UI 测试。
我使用 XCUIElementQuery 定位警报并关闭它
let dismissSavedPasswordButton = app.alerts["Select a Saved Password to Use With “My App”"].buttons["Not Now"]
但对于较旧的设备(例如 运行 iOS 9),此代码应如下所示
let dismissSavedPasswordButton = app.alerts["Select a Saved Safari Password to Use With “My App”"].buttons["Not Now"]
是否可以重写此代码以使其通用?
不是正则表达式,但应该可以:
app.alerts.element(boundBy: 0)
由于屏幕上应该只有一个警报,因此只需按位置查询即可。
除非你在屏幕上有多个不是现在的按钮,否则你可以只使用
app.buttons["Not Now"]
您不需要指定更多。
如果扩展 XCUIElementQuery
class 是可能的。我在我的代码中做了类似的事情:
extension XCUIElementQuery {
func softMatching(substring: String) -> [XCUIElement] {
return self.allElementsBoundByIndex.filter { [=10=].label.contains(substring) }
}
}
之后,您可以像这样匹配元素:
let dismissSavedPasswordButton = app.alerts.softMatching(substring: "Password").first!.buttons["Not Now"]
我目前正在学习如何在 XCode 中创建 UI 测试。
我使用 XCUIElementQuery 定位警报并关闭它
let dismissSavedPasswordButton = app.alerts["Select a Saved Password to Use With “My App”"].buttons["Not Now"]
但对于较旧的设备(例如 运行 iOS 9),此代码应如下所示
let dismissSavedPasswordButton = app.alerts["Select a Saved Safari Password to Use With “My App”"].buttons["Not Now"]
是否可以重写此代码以使其通用?
不是正则表达式,但应该可以:
app.alerts.element(boundBy: 0)
由于屏幕上应该只有一个警报,因此只需按位置查询即可。
除非你在屏幕上有多个不是现在的按钮,否则你可以只使用
app.buttons["Not Now"]
您不需要指定更多。
如果扩展 XCUIElementQuery
class 是可能的。我在我的代码中做了类似的事情:
extension XCUIElementQuery {
func softMatching(substring: String) -> [XCUIElement] {
return self.allElementsBoundByIndex.filter { [=10=].label.contains(substring) }
}
}
之后,您可以像这样匹配元素:
let dismissSavedPasswordButton = app.alerts.softMatching(substring: "Password").first!.buttons["Not Now"]