Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS-UI测试在TableViewCell中查找图像_Ios_Objective C_Xctest_Xcode Ui Testing_Uiaccessibility - Fatal编程技术网

iOS-UI测试在TableViewCell中查找图像

iOS-UI测试在TableViewCell中查找图像,ios,objective-c,xctest,xcode-ui-testing,uiaccessibility,Ios,Objective C,Xctest,Xcode Ui Testing,Uiaccessibility,作为UI测试的新手,我正在为即将完成的Objective-C编码的应用程序编写UI测试 我有一个自定义单元格的UITableView。单元格具有文本视图、图像视图或进度视图。图像或进度视图是动态设置的。 对于我的测试,我需要检查是否设置了映像。我尝试使用accessibilityIdentifier属性。我在该单元格的初始化方法中将其设置为: self.thumbnailImageView.isAccessibilityElement = YES; self.thumbnailImageView

作为UI测试的新手,我正在为即将完成的Objective-C编码的应用程序编写UI测试

我有一个自定义单元格的UITableView。单元格具有文本视图、图像视图或进度视图。图像或进度视图是动态设置的。 对于我的测试,我需要检查是否设置了映像。我尝试使用
accessibilityIdentifier
属性。我在该单元格的初始化方法中将其设置为:

self.thumbnailImageView.isAccessibilityElement = YES;
self.thumbnailImageView.accessibilityIdentifier = @"imageLabel"
在我的测试中,我获取单元格并尝试根据标识符获取其元素,如:

XCUIElementQuery *tablesQuery = app.tables;
XCUIElementQuery *cellsQuery = app.tables.cells;
XCUIElement *lastCell = [[tablesQuery childrenMatchingType:XCUIElementTypeCell] elementBoundByIndex:(cellsQuery.count - 1)];
XCUIElement *image = lastCell.otherElements[@"imageLabel"];
我没有从app.otherElements获取图像,因为创建了多个单元格,其中许多单元格可能具有图像视图。我想检查最后一个单元格和它的图像。 在此之后,我将断言设置为:

XCTAssertTrue(image.exists, @"Image cell has failed");
它永远不会通过此测试,并且还会进入异常断点(?)。我检查了图像的情况,它不是零

我不知道该怎么办。对于Objective-C,几乎没有用于UI测试的文档。尽管如此,Swift文件还是不错的,但它们还不够


任何帮助都会很好。谢谢大家!

UI测试仅对可见单元格运行,即使在执行测试用例时,也不会加载最后一个单元格。因此,一旦到达tableView内容的末尾,就可以通过编程方式滚动tableView内容(在这里,您需要再次设定是否滚动到tableView内容的末尾)。之后,您的UI测试将通过。

但是如果我使用相同的lastCell对象并检查它是否有文本,它就可以正常工作。当我执行断言时,它必须被插入。这一次你有了最后一个单元格,因为你滚动到了内容偏移量。一切都是一样的。区别是什么?UITableView重用单元格。它创建用户可见的单元格。如果您向上或向下滚动,它会利用现有的单元格来避免内存问题。您只能在可见单元格上执行测试。要自动化所有单元的测试,您需要在代码中滚动单元。我知道这些细节。我的意思是,我添加单元格并向下滚动任何类型的内容(文本和图像都不重要)。如果我可以检查文本,那么有什么区别使我无法访问图像?您可以通过切换Apple文档菜单栏中的语言来获取Objective-C API的文档。以下是苹果对UI测试的简要解释:谢谢,我知道这项服务,但这还不够。