在 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”)