我有一个包含大量单元格的表格视图。我尝试从此表格视图中点击特定单元格。但测试以这个错误结束:
15.0s内抓拍失败
我假设系统将在访问其元素之前拍摄整个表视图的快照。由于cell数量巨大,快照时间不够(15秒可能是系统默认时间)。
我手动设置睡眠时间/等待时间(我设置了 60 秒)。60 秒后我仍然无法访问单元格!
我发现的一件奇怪的事情是,在访问单元格之前,我在调试器中打印对象,如下所示:
po print XCUIApplication().cells.debugDescription
Run Code Online (Sandbox Code Playgroud)
它显示一个错误,例如
15.0s内抓拍失败
错误:执行被中断,原因:内部 ObjC 异常断点(-3)..
该过程已返回到表达式求值之前的状态。
再次,如果我使用打印相同的对象
po print XCUIApplication().cells.debugDescription
Run Code Online (Sandbox Code Playgroud)
现在它将打印调试器视图中表格视图中的所有单元格。
不知道为什么会发生这种情况。有人遇到过类似的问题吗?需要帮助!!
我正在寻找一种方法将 UI 测试与主应用程序所在的原始存储库分开。是否可以将 UI 测试代码放在另一个存储库中,以某种方式“引用”主应用程序,然后进行测试?
我的应用程序中有一个用于创建帐户的网络视图(我没有编写,也无法更改关联的网页)。
\n\n通常,单击任何按钮/链接都很容易,但这里我的“创建帐户”按钮的字符串在其标题中具有很棒的字体,使得记录器崩溃并且无法以编程方式调用该按钮。
\n\n这是它打印的内容app.webViews.allElementsBoundByIndex:
Element subtree:\n \xe2\x86\x92WebView, 0x1c03823c0, traits: 8589934592, {{0.0, 0.0}, {736.0, 414.0}}\n...\nLink, 0x1c0384100, traits: 8590065666, {{242.0, 357.0}, {252.0, 44.0}}, label: \'create account \xef\x84\x85\'\nRun Code Online (Sandbox Code Playgroud)\n\n正如你所看到的,很棒的字体变成了 \xef\x84\x85我无法检测到的字体,例如:
webViews.staticTexts["create account \xef\x84\x85"].tap()\nRun Code Online (Sandbox Code Playgroud)\n\n问题
\n\n我有一些 UI 测试,想测试当我按下“订阅”按钮时会发生什么。在模拟器中,会显示一条警告,要求使用 Apple ID 登录:
app.alerts["Sign In"]我尝试使用谓词和使用函数等待警报addUIInterruptionMonitor。没有运气。我什至尝试等待“取消”按钮出现,但这也不起作用。
有什么想法如何处理此警报并按“取消”吗?
我正在为基于文档的 macOS 应用程序编写 UI 测试。
该测试通过单击启动屏幕窗口中的按钮(非常类似于“欢迎使用 Xcode”窗口)来打开模板文档。这适用于第一次测试运行。但随后的启动因状态恢复而受挫,因为之前打开的文档覆盖了启动屏幕窗口。
运行 Xcode UI 测试时如何禁用状态恢复?
我已经在我的应用程序目标中禁用了状态恢复(“启动应用程序而不恢复状态”),效果很好。但这不会延续到测试目标,即使选中“使用运行操作的参数和环境变量”也是如此。
我还尝试在测试结束时关闭之前打开的文档,但是当我在保存对话框中单击“删除副本”时,“记录 UI 测试”不会记录任何内容。
我正在创建一个XCUIElementQuery来获取所有具有staticTexts的单元格以字符串开头(例如"Buy"),但不知道.我用谷歌搜索但没有希望.
绝望的尝试得到staticText但不是cell.
XCUIElementQuery *rows = [app.cells.staticTexts matchingPredicate:[NSPredicate predicateWithFormat:@"label CONTAINS 'Buy'"]];
Run Code Online (Sandbox Code Playgroud)
有经验的人吗?我们parent至少可以得到上面的staticTexts吗?
我一直在Xcode中使用新的XCUITest。现在,我要制作一个测试用例,该用例将执行某些特定步骤,终止该应用程序并重新打开它。我知道这在仪器中是不可能的,所以我想知道是否可以用XCUITest做到这一点。
我需要访问应用程序委托中的某些值以使用Sparkle修改(和测试)更新过程。所以问题是,如何在UI测试中从XCUIApplication访问NSApplicationDelegate?
我正在使用XCUIApplication编写UI测试.我正在测试单元格行上的选定索引.当我运行测试时,我无法获得所选索引的文本.但是,我可以单击所选行,但使用底部tableView的静态文本.当下面有tableViewController时会发生这种情况.我试图在另一个TableViewController的顶部添加一个带有tableView的ViewController.下面的tableViewController是使用storyboard生成的,但上面的viewController是动态生成的.
设置:我正在使用xib作为tableView的行,我正在使用带有标签和图像的自定义UITableViewCell.标签和图像都打开了辅助功能,但没有打开细胞.我试过在单元格上打开辅助功能但仍然无法正常工作.
这是我的考验
//the BoxListTable is my ViewController that is on top
// I added the following code in that viewController:
self.view.isAccessibilityElement = true
self.view.accessibilityIdentifier = "BoxListTable"
//I also added these for the tableView but it doesn't show up in my tests
tableView.accessibilityIdentifier = "tableview"
tableView.isAccessibilityElement = true
//my test is the following
XCUIApplication().tables["BoxListTable"].tap()
Run Code Online (Sandbox Code Playgroud)
当我运行此测试时,测试单击完整的tableView但无法获取任何静态文本.它也无法获取任何单元格或tableview.po XCUIApplication.tables ["BoxListTable"].cells.count返回0. //我试过
XCUIApplication.tables ["BoxListTable"].element.children(匹配:.other)
返回0
你能否告诉我为什么即使设置了accessibilityIdentifier也无法看到它.
我在故事板中设置了辅助功能标识符.这些都有效.但是,我在更多视图上启用了辅助功能,现在使用辅助功能标识符找不到任何元素.
但是,我仍然可以使用记录功能生成的代码找到元素.
这是我如何找到元素:
XCUIApplication().buttons["loginButton"] //loginButton is the accessibility identifier
Run Code Online (Sandbox Code Playgroud)
以下是使用录像机找到相同按钮的方法:
XCUIApplication().children(matching: .window).element(boundBy: 0).children(matching:
.other).element.children(matching: .other).element.children(matching:
.other).element.children(matching: .other).element.tap()
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
No matches found for *typeOfElement*
Run Code Online (Sandbox Code Playgroud)
到目前为止,我还无法在线找到适用的解决方案.
我的问题简而言之:为什么我不能使用可访问性标识符来获取元素的引用.
提前致谢.
xcode-ui-testing ×10
xcode ×8
xctest ×4
ios ×3
swift ×3
ui-testing ×2
arrays ×1
cocoa ×1
ios9 ×1
iphone ×1
nspredicate ×1
objective-c ×1
snapshot ×1
xctestcase ×1