ios 在XCUITest中,无法点击交换机上的()

lx0bsm1f  于 2023-04-22  发布在  iOS
关注(0)|答案(1)|浏览(148)

我有一个简单的屏幕,有三个开关。我已经添加了accessibilityindefier到开关,并确认开关是启用的,hittable,而不是选定的。但是当我尝试点击()元素时没有得到响应。步骤通过,没有错误,开关状态没有改变。

let daSwitch = app.switches["LocationSwitch"]
 daSwitch.tap()

我尝试了doubleTap(),并在点击之间放置sleeps。可访问性检查器也能够识别元素。

Tap()正在其他屏幕上的开关上工作,但不在此特定屏幕上。我不确定什么可以阻止识别/执行点击。

有什么建议吗?

Xcode版本:14.3(14E222b)

eyh26e7m

eyh26e7m1#

检查开关元件是否正确识别:确保使用其可访问性标识符或标签正确标识了switch元素。要对此进行调试,可以将所有switch元素打印到控制台,并验证是否针对正确的元素:

let allSwitches = XCUIApplication().switches
print("All switches: \(allSwitches.debugDescription)")

使用基于坐标的点击:在某些情况下,tap()函数可能无法按预期工作。您可以尝试在switch元素上使用基于坐标的tap:

let switchElement = XCUIApplication().switches["yourSwitchAccessibilityIdentifier"]
let coordinate = switchElement.coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.5))
coordinate.tap()

等待元素可命中:也有可能在您尝试点击开关时,开关还没有准备好进行交互。在尝试点击之前,请确保该元素是可点击的:

let switchElement = XCUIApplication().switches["yourSwitchAccessibilityIdentifier"]
let isSwitchElementHittable = switchElement.waitForExistence(timeout: 10)
if isSwitchElementHittable {
    switchElement.tap()
} else {
    print("Switch element is not hittable.")
}

如果这对你有帮助就告诉我

相关问题