Tôi đang sử dụng công cụ "Công cụ" Xcode để xây dựng tự động hóa cho ứng dụng iOS và tôi cần phải xác minh rằng nhãn cho mục nhập mà tôi đã tạo trong ứng dụng của mình là chính xác.Làm cách nào để xác minh tên của nhãn trong chế độ xem bảng bằng cách sử dụng Công cụ trên iOS?
Mã được liệt kê bên dưới là vì một lý do nào đó, không dẫn đến lỗi vượt qua hoặc không thành công. Thay vào đó, khi nó chạy, tôi nhận được cảnh báo "Sự cố" trong nhật ký và các lần thoát thử nghiệm mà không đóng một cách rõ ràng.
Tôi muốn thay đổi các bài kiểm tra để tôi kiểm tra tên nhãn mà tôi biết đang được tạo, bởi vì tôi có thể thấy nó bằng AccessibilityViewer sau khi tự động hóa của tôi chạy.
Nếu nhãn là chính xác, sau đó tôi muốn đăng nhập kiểm tra dưới dạng thẻ.
Tôi đã sử dụng UIATarget.localTarget().logElementTree()
để ánh xạ cây phần tử của mình và tôi đã sử dụng AccessibilityInspector để xác minh tên nhãn của tôi sau khi mục nhập của tôi đã được tạo. Rắc rối là, tôi chỉ không thể có được cú pháp để xác minh điều này đúng.
Trình kiểm tra khả năng truy cập của tôi đã xác minh rằng tên nhãn là: MyDogs! và nó có các đặc điểm của Văn bản tĩnh và cung cấp Khung hình của {{114, 0}, {166,480}}
Bằng cách xem cây phần tử - mà tôi muốn tôi có thể dán ở đây, nó trông giống như nhãn sẽ được tìm thấy dọc theo con đường này:
\Target
-+
--\Application
---+
----\Window
-----+
------\TableView
-------+
--------\TableCell: name:MyDogs! rect:{0, 40},{480,166}}
---------|UIAStaticText: name:MyDogs! value:MyDogs! rect:{{0, 40},{480, 166}}
---------|UIAButton: name:story list share rect:{{439, 41},{33, 28}}
Bất cứ ai có thể cho tôi biết cách xác minh nhãn này?
mã hiện tại của tôi trông như thế này (nhưng không được kiểm tra nhãn - bởi vì tôi không biết làm thế nào để):
var testName = "LoginCreateEntry";
//Start test logging
UIALogger.logStart(testName);
//This is supposed to target the entry that my automation has created.
//The flow goes, run the automation that creates the entry, then verify that the entry
//got created as expected and is visible to the user in the iPhone interface.
var myEntry = target.frontMostApp().mainWindow().scrollViews().staticTexts()["My Dogs!"].value();
var entryName = "My Dogs!";
//Do a bunch of UI automation here to create my entry, which results in the entry
//appearing in the mainWindow with the label: My Dogs!
//If myEntry evaluates to true, then call this test a pass.
if (myEntry === entryName) {
UIALogger.logMessage("My entry was created!");
//Mark the test as a PASS
UIALogger.logPass(testName);
}
else {
UIALogger.logMessage("My entry was not created!");
//Mark the test as a FAIL
UIALogger.logFail(testName);
}
//End test
Bất kỳ thông tin phản hồi hoặc trợ giúp sẽ được đánh giá cao nhất !!
--------------------------------- CẬP NHẬT ------------ --------------------------
Cảm ơn tất cả vì sự giúp đỡ của bạn! Tôi thực sự có giá trị của tiêu đề và sẽ hiển thị giải pháp của tôi bên dưới. Nhưng tôi KHÔNG THỂ nhận được chức năng ghi/không đăng nhập để hoạt động chính xác bất kể tôi làm gì - và vấn đề cũng là encountered by others. Tôi tiếp tục nhận được các thông báo
Issue: Script ended without explicting closing this test
cuối bài kiểm tra của tôi. Tôi đang bị thuyết phục rằng đó là một lỗi với dụng cụ.
Dưới đây là thử nghiệm cập nhật của tôi:
var target = UIATarget.localTarget();
var app = UIATarget.localTarget().frontMostApp();
var testName = "LoginCreateEntry";
//Start test logging
UIALogger.logStart(testName);
//Do lots of gui automation stuff here to create the entry which will appear in my app interface.
//I want to verify that the title I gave the entry matches what appears in the app interface
var window = app.mainWindow();
var tableView = window.tableViews()[0];
var tableGroup = tableView.groups()[0];
var entryName = "My Dogs!";
var myEntry = tableView.cells()[0].name(); //<-- This is what I needed!!!
UIALogger.logMessage("My Story Title: " + myEntry); //Print out entry name in log
if (myEntry === entryName) {
UIALogger.logMessage("My entry was created!");
//Mark the test as a PASS
UIALogger.logPass (testName);
} else {
UIALogger.logMessage("My entry was not created!");
//Mark the test as a FAIL
UIALogger.loFails (testName);
}
//End test
Tôi đã thực hiện một số điều chỉnh cho câu hỏi của bạn để phù hợp với tùy chọn kiểu chung trên SO cũng như cung cấp cho bạn nhiều thẻ tập trung hơn, tôi hy vọng điều này sẽ giúp bạn nhận được câu trả lời hay. Câu hỏi tuyệt vời btw! –
Điều gì đó có thể thú vị cho các trường hợp tương lai như thế này - nếu bạn tự tìm câu trả lời, có vẻ như OK để đăng câu trả lời trên SO và chấp nhận nó. :) Xem http://meta.stackexchange.com/questions/17845/etiquette-for-answering-your-own-question –