Tôi đang làm việc với UITableViews và tôi muốn tìm ô tương ứng với điều khiển hoặc văn bản tĩnh bên trong ô.Tìm cha mẹ hoặc anh chị em với kiểm tra giao diện người dùng Xcode
Nói chung, cách tốt nhất để tìm bất kỳ phụ huynh hoặc anh chị em nào của một yếu tố nhất định sẽ là điều tuyệt vời để biết.
Hiện tại, tôi chỉ đang lặp qua các ô cho đến khi tôi tìm thấy chính xác, mà tôi muốn tránh. Tôi đã thử sử dụng app.tables.cells.containingPredicate
, nhưng chưa có bất kỳ may mắn nào.
let pred = NSPredicate { (element, bindings: [String : AnyObject]?) -> Bool in
return element.staticTexts["My Text"].exists
}
let cells = app.tables.cells.containingPredicate(pred)
Phần tử được chuyển đến khối vị ngữ là XCElementSnapshot không có staticTexts.
EDIT
James là chính xác, containingType: định danh: Phương pháp hoạt động tuyệt vời.
Trong nhanh chóng, nó trông như thế này
let cell = app.tables.cells.containingType(.StaticText, identifier: "My Text")
Trường hợp nhận dạng trong chữ ký phương pháp không tương ứng với tài sản định danh của phần tử, chứ không phải nó chỉ đơn giản là cách thông thường bạn sẽ truy cập vào một phần tử bằng văn bản trong ngoặc .
app.cells.staticTexts["My Text"]
Tôi vẫn còn nhầm lẫn về lý do tại sao 'app.cells.staticTexts [" My Text "]' không làm việc cho bạn. Nếu chuỗi "Văn bản của tôi" thuộc về bất kỳ ô nào, ảnh chụp nhanh của phân cấp trợ năng của ứng dụng sẽ tìm chuỗi và khớp với chuỗi đó. Phương thức 'containsType: identifier:' tạo một 'XCUIElementQuery' và điều này không có nghĩa là' XCUIElement' từ truy vấn này thực sự tồn tại trong ứng dụng của bạn. – Citronex
app.cells.staticTexts [] sẽ trả lại cho tôi một văn bản tĩnh, tức là UILabel, trong khi tôi cần UITableViewCell, không phải nhãn – Alex
Tôi hiểu. Sửa tôi nếu tôi sai, nhưng làm 'let cell = app.tables.cells.containingType (.StaticText, identifier:" My Text ")' đang tạo một XCUIElementQuery, không phải là một XCUIElement, vì vậy bạn không thực sự khởi tạo một trong ứng dụng của bạn, chỉ cần tạo truy vấn đến một phần tử có thể không tồn tại. Nếu trên console bạn làm 'po app.tables.cells.containingType (.StaticText, identifier:" blah blah ")' nó sẽ luôn trả về một đối tượng ngay cả khi nó không tồn tại, và bạn không thể chạy bất kỳ xác nhận nào trên một XCUIElementQuery, hoặc thậm chí các phương thức .exist hoặc .hittable để xem phần tử của bạn có phải là thực hay không. – Citronex