在 XCUITest 中使定位器动态化
Making locators dynamic in XCUITest
是否可以在 XCUITest 中使定位器动态化?通常在定义定位器时,我们倾向于写成:
让 optionAbutton = app.buttons["option-a"]
并在 func 中用作 optionAbutton.tap();
现在,如果页面上有更多按钮,例如:option-b、option-c,我们是否应该为每个按钮设置单独的定位器,例如:
让 optionBbutton = app.buttons["option-b"]
让 optionCbutton = app.buttons["option-c"]
或者是否可以像 app.buttons["PLACEHOLDER"] 一样保留定位器的通用性,并在 func 中用选项-a、选项-b 或选项-c 替换它?
当然可以。标识符只是一个字符串,因此允许进行任意数量的字符串操作。
func tapAnOptionButton(suffix: String) {
anOptionButton(suffix).tap()
}
private func anOptionButton(_ suffix: String) -> XCUIElement {
return app.buttons[“option-“ + suffix]
}
然后使用它:
tapAnOptionButton(suffix: “a”)
是否可以在 XCUITest 中使定位器动态化?通常在定义定位器时,我们倾向于写成: 让 optionAbutton = app.buttons["option-a"]
并在 func 中用作 optionAbutton.tap();
现在,如果页面上有更多按钮,例如:option-b、option-c,我们是否应该为每个按钮设置单独的定位器,例如: 让 optionBbutton = app.buttons["option-b"] 让 optionCbutton = app.buttons["option-c"]
或者是否可以像 app.buttons["PLACEHOLDER"] 一样保留定位器的通用性,并在 func 中用选项-a、选项-b 或选项-c 替换它?
当然可以。标识符只是一个字符串,因此允许进行任意数量的字符串操作。
func tapAnOptionButton(suffix: String) {
anOptionButton(suffix).tap()
}
private func anOptionButton(_ suffix: String) -> XCUIElement {
return app.buttons[“option-“ + suffix]
}
然后使用它:
tapAnOptionButton(suffix: “a”)