因此,通过新的 Xcode 更新,Apple 改变了我们进行 UI 测试的方式。在工具中,我们使用java脚本函数“isVisible”来确定我们的目标元素是否可见。
我正在尝试在 Objective-C 中复制它,但我似乎找不到与之等效的东西。我有一个表格视图,一个带有两个标签的原型单元。假设这个原型电池可以重复使用 50 次。
我试图滚动直到最后一个单元格可见,我通过这样做来做到这一点:
if (![[[[[[XCUIApplication alloc] init].tables childrenMatchingType:XCUIElementTypeCell] matchingIdentifier:@"cell"] elementBoundByIndex:49].staticTexts[@"text"] exists]) {
[[[[[[XCUIApplication alloc] init].tables childrenMatchingType:XCUIElementTypeCell] matchingIdentifier:@"cell"] elementBoundByIndex:0].staticTexts[@"text"] swipeUp];
}
但这不会滑动,因为加载视图时该元素就存在。请帮忙,因为这让我发疯。
您应该扩展 XCUIElement 的方法列表。第一种方法(scrollToElement:
) 将在 tableView 上调用,第二个扩展方法可帮助您确定该元素是否位于主窗口上。
extension XCUIElement {
func scrollToElement(element: XCUIElement) {
while !element.visible() {
swipeUp()
}
}
func visible() -> Bool {
guard self.exists && !CGRectIsEmpty(self.frame) else { return false }
return CGRectContainsRect(XCUIApplication().windows.elementBoundByIndex(0).frame, self.frame)
}
}
滚动代码应如下所示(例如滚动到最后一个单元格):
func testScrollTable() {
let app = XCUIApplication()
let table = app.tables.elementBoundByIndex(0)
let lastCell = table.cells.elementBoundByIndex(table.cells.count-1)
table.scrollToElement(lastCell)
}
Swift 3:
extension XCUIElement {
func scrollToElement(element: XCUIElement) {
while !element.visible() {
swipeUp()
}
}
func visible() -> Bool {
guard self.exists && !self.frame.isEmpty else { return false }
return XCUIApplication().windows.element(boundBy: 0).frame.contains(self.frame)
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)