我有一个标签,指示所选的段文本。
默认情况下,label.text ="时间表"
加载细分时,我会用选定的细分文字更新此标签文字。
在我的UITestCase中,我有以下代码: -
func testTargetMotionSettings() {
let app = XCUIApplication() // root of tree of UI elements
// app.segmentedControls.buttons["Settings"].tap()
let outputLabel = app.staticTexts.matching(identifier: "Stimulus motion type").element
// app.buttons["Departures"].tap()
XCTAssertEqual((outputLabel.value as! String), "Departures")
app.buttons["Arrivals"].tap()
XCTAssertEqual((outputLabel.value as! String), "Arrivals")
}
但它失败了" XCTAssertEqual失败:("")不等于("离开") - "
请帮忙
答案 0 :(得分:0)
您无法以这种方式访问元素的文本。 outputlabel是一个XCUIElement对象,它的值不是标签的文本! 所以基本上你没有权限访问你的UILabel。
我建议您使用一些框架,例如KIF,它们将在UnitTest Target中,您可以访问您的类和项目中的所有内容。但是在UITest目标中,只使用XCUITest元素是如此有限。
例如,使用KIF,您可以通过以下方式找到您的segmentController对象:
let segmentController = tester().waitForView(withAccessibilityLabel: "SegmentViewAccessabilityLabel") as? SegmentedControllerView
答案 1 :(得分:0)
只要您尚未指定辅助功能标签,UILabel就会自动将其文本用于辅助功能。这意味着您可以使用XCUIElement.label
:
func testTargetMotionSettings() {
let app = XCUIApplication()
let outputLabel = app.staticTexts["Stimulus motion type"]
app.buttons["Departures"].tap()
XCTAssertEqual(outputLabel.label, "Departures")
app.buttons["Arrivals"].tap()
XCTAssertEqual(outputLabel.label, "Arrivals")
}