我正在为 iOS 应用程序编写自动化测试,它需要访问“选择照片...”、“允许访问所有照片”和“不允许”。我正在使用 Appium 2.0 和 Webdriver.io,在带有 iOS 16.3 设备的 BrowserStack 上运行。
最初,我对“
name
”按钮使用“Allow Access to All Photos
”定位器策略,因为它是独一无二的。它工作了几次,然后开始间歇性失败。当我查看执行视频时,实际上是点击了“不允许”按钮。
因此,我更改了定位器策略以使用 iOS Predicate,如下所示:
type == "XCUIElementTypeButton" AND label == "Allow Access to All Photos" AND name == "Allow Access to All Photos"
。但是,它仍然间歇性地失败,并出现以下错误:“错误:元素(”-ios谓词字符串:类型==“XCUIElementTypeButton”AND标签==“允许访问所有照片”AND名称==“允许访问所有照片” ") 10000ms后仍未显示",但实际上是点击了视频中的‘不允许’按钮。
const allowAccessToAllPhotosButton = await this.allowAccessToAllPhotosButton;
await allowAccessToAllPhotosButton.waitForDisplayed();
await allowAccessToAllPhotosButton.click();
get allowAccessToAllPhotosButton(): Promise<WebdriverIO.Element> {
return getElementByPredicate(IOSPredicate.ALLOW_ACCESS_TO_ALL_PHOTOS_BUTTON);
}