无法访问 nib 文件中的按钮(UI 测试 iOS)

Posted

技术标签:

【中文标题】无法访问 nib 文件中的按钮(UI 测试 iOS)【英文标题】:Cannot access button in nib file (UI Testing iOS) 【发布时间】:2019-03-08 12:12:10 【问题描述】:

我正在为我的观点编写一个 UITest 案例。问题是我无法访问 nib 文件视图中的按钮。我也为按钮提供了可访问性标识符,但仍然无法访问它Here is the image

我只想点击那个拒绝按钮,但可访问性标识符对此不起作用。这是我的代码

app.buttons["CancelRequest"].tap()

CancelRequest 是可访问性标识符。我也尝试了下面的代码,因为按钮在容器视图中但没有运气

let ContainerView = app.otherElements["RejectContainerView"]
let RejectButton = ContainerView.buttons.element(boundBy: 0)  
RejectButton.tap()

我也尝试记录生成此代码的屏幕

app.buttons["dismiss"].tap()

奇怪的是录制屏幕正在为取消按钮生成相同的代码,并且您可以在我提供的图像中看到取消按钮

【问题讨论】:

"你试过用“拒绝”代替“取消请求” 你的意思是说通过按钮名称访问它。我已经做了兄弟它没有工作测试用例失败 可能是您在其笔尖加载到视图中之前访问按钮。 在点击按钮之前,我会检查笔尖上的静态标签以确保它已加载 好的,那么你可以说Xcode通过运行XCUITests并开始记录UItests来生成语句,Xcode会自动为UITests中的事件生成语句,以及访问元素。 【参考方案1】:

它在禁用按钮的可访问性标识符并再次启用后工作。我认为这是一个错误,它是 XCTEST 案例的非常奇怪的行为

我试图用另一个 xib 复制相同的结果,是的,这是 XCTEST 案例中的一个问题,有时您无法访问 xib 按钮,您必须多次禁用和启用可访问性标识符,有时如果这不起作用,那么只需执行这个

sleep(2)
app.buttons["submit"].tap()

在点击按钮之前先进入睡眠,这是苹果推荐的方式,真的很奇怪

【讨论】:

以上是关于无法访问 nib 文件中的按钮(UI 测试 iOS)的主要内容,如果未能解决你的问题,请参考以下文章

文本字段内切换按钮的 IOS UI 测试用例

在 iOS 13 UI 测试中访问 UIActivityViewController 上的按钮会导致崩溃

在 XCode 中的 UI 测试期间无法访问自定义视图

如何在不“连接”它们的情况下以编程方式访问 NIB 中的 UI 元素?

IOS:如何使从 nib 文件加载的子视图可以使用它的按钮(IBAction)

iOS Webview UI 测试