【发布时间】:2016-03-23 02:07:36
【问题描述】:
我有一个 UI 测试检查静态文本元素的值,等待几秒钟并再次检查以确认更改。起初它不起作用,因为层次结构没有更新。我在日志中注意到了这一点;
使用缓存的可访问性层次结构
我已经为此提供了一种解决方法,只需向菜单添加一个点击并打开/关闭它,以便合成事件并更新层次结构。
但是,如果有办法直接清除缓存或强制更新,那就更好了。我还没有在 API 中找到一个。我错过了什么吗?
有什么想法吗?
这就是我正在做的;
XCTAssertEqual(app.staticTexts["myText"].label, "Expected 1")
sleep(20)
menu.tap()
sleep(1)
menu.tap()
XCTAssertEqual(app.staticTexts["myText"].label, "Expected 2")
我希望能够做到的事情
XCTAssertEqual(app.staticTexts["myText"].label, "Expected 1")
sleep(20)
app.elements.refresh()
XCTAssertEqual(app.staticTexts["myText"].label, "Expected 2")
【问题讨论】:
-
你能包含你正在使用的代码吗?您是在使用
expectationForPredicate和waitForExpectationsWithTimeout来等待,还是其他? -
话虽如此,我也是因为类似的问题才来到这里的。我正在做 myButton.tap() ,它在屏幕上移动按钮,然后 myButton 神秘地引用了一个不同的按钮,可能是由于缓存魔法
-
在上面添加了代码。在你的情况下,我认为你有相反的问题。您点击一个合成事件的按钮,从而重新加载元素层次结构,以便在您点击按钮时清除缓存。
标签: xcode-ui-testing