Xcode 如何快速查找字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xcode 如何快速查找字符串相关的知识,希望对你有一定的参考价值。

参考技术A 然后输入@"[^"]*[\u4E00-\u9FA5]+[^"\n]*"  就可方便查找的所有字符串.

在 Xcode ui 测试 Swift 中查找表格单元格

【中文标题】在 Xcode ui 测试 Swift 中查找表格单元格【英文标题】:Find table cell in Xcode ui testing Swift 【发布时间】:2017-06-08 08:58:21 【问题描述】:

我是 Xcode + ios 测试的新手。我将快速自动化现有 ios 项目的 ui。问题是我无法找到视图的表格视图。这是我用来从表格视图中查找单元格的代码,但在这种情况下不起作用:

XCUIApplication().tables.cells.allElementsBoundByIndex[1].tap()

我附上视图流的屏幕截图。 view的ios代码不是我写的

【问题讨论】:

此屏幕上也无法自动录制。 这里没有足够的信息来诊断问题。我们所能看到的是,在您的视图层次结构中有一个表格视图,但您正试图访问表格视图中的第二个单元格,该单元格可能存在也可能不存在。请添加XCUIApplication().tables.cells.debugDescription 的输出,以便我们查看正在处理的内容。 【参考方案1】:

所以你想找到一个tableView的单元格然后点击它

此解决方案是在 Xcode 9.0 beta 6 中使用 Swift 4 测试后发布的

正如 Oletha 在评论中提到的,最好通过打印 debugDescription 来了解视图的层次结构:

    let app = XCUIApplication()

    override func setUp() 
        super.setUp()
        continueAfterFailure = false
        app.launch()
        print(app.debugDescription)
    

打印语句将为您提供视图及其层次结构的详细列表。

接下来,您应该将 accessibilityIdentifier 添加到您的表格视图和单元格中,如下所示:

a) 在您的 viewDidLoad() 或控制器的任何其他相关函数中-

    myTableView.accessibilityIdentifier = “myUniqueTableViewIdentifier”

b) 在你的 tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) 函数内部-

    cell.accessibilityIdentifier = "myCell_\(indexPath.row)"

完成后,您可以在测试用例中编写以下代码以获得所需的结果:

    let myTable = app.tables.matching(identifier: "myUniqueTableViewIdentifier")
    let cell = myTable.cells.element(matching: .cell, identifier: "myCell_0")
    cell.tap()

请注意,这只会帮助您找到并点击所需的单元格,您可以在测试用例中添加一些 XCTAssert 检查以使其更有用。

P.S.:网上有很多指南可以帮助您学习使用 Xcode 进行 UI 测试。例如:https://blog.metova.com/guide-xcode-ui-test/

【讨论】:

这对我帮助很大...谢谢!【参考方案2】:

Kushal 答案的 Objective-C 版本。不过,最后一步更加简化了。

A- 在定义表的地方(通常在其 viewController 的 viewDidLoad 中),定义其 accessibilityIdentifier

_myTable.accessibilityIdentifier = @"MyOptionsTable";

B- 在cellForRowAtIndexPath 中,给每个单元格一个accessibilityIdentifier

cell.accessibilityIdentifier = @"MySpecialCell";

C- 在您的测试用例中,获取表格,然后点击单元格:

    XCUIApplication *app = [[XCUIApplication alloc] init];
    XCUIElement *table = app.tables[@"MyOptionsTable"];
    XCUIElement *cell = table.cells[@"MySpecialCell"];
    [cell tap];

【讨论】:

【参考方案3】:

首先设置单元格accessibilityIdentifier:

cell.accessibilityIdentifier = "Cell_\(indexPath.row)"

通过标识符获取单元格,然后点击单元格:

let cell = app.cells.element(matching: .cell, identifier: "Cell_0")
cell.tap()

【讨论】:

【参考方案4】:

如果您有单元格的accessibilityIdentifier,那么以下直接的解决方案对我来说效果很好:

app.cells["your_accessibility_identifer"].tap()

使用表格视图访问标识符和表格视图单元格标识符,投票最多的答案对我不起作用。它首先找到表格视图,然后在找到单元格时就失败了。

来源:1。

【讨论】:

以上是关于Xcode 如何快速查找字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何从 C++ 中的字符串中快速查找和子串多个项目?

Vim快速查找

如何在 Visual Studio 代码中快速查找项目中的文件或符号?

Xcode 在所有项目文件中查找和替换

JS获取中文拼音首字母,并通过拼音首字母快速查找页面内的中文内容

华为机试真题 Python 实现快速人名查找