2012-01-05 19 views
6

Tôi có trường tìm kiếm trong ứng dụng của mình và tôi đã đặt loại khóa trả về của bàn phím cho trường này thành UIReturnKeyNext. Tôi đang cố gắng để viết một bài kiểm tra UIAutomation đó nhấp chuột vào nútNext trên bàn phím bằng cách sử dụng dòng sau:Nhấp vào bàn phím 'Tiếp theo' bằng cách sử dụng UIAutomation

UIATarget.localTarget().frontMostApp().mainWindow().keyboard().keys().firstWithName("next"); 

Cuộc gọi này là không bởi vì chìa khóa với tên 'bên cạnh' không được tìm thấy. Tôi đã thực hiện một loạt tất cả các yếu tố trong ứng dụng của mình bằng cách sử dụng:

UIATarget.localTarget().frontMostApp().logElementTree(); 

Điều này cho thấy thực sự là chìa khóa trong bàn phím có tên 'tiếp theo', nhưng bằng cách nào đó nỗ lực của tôi để lấy nó như hiển thị ở trên vẫn không thành công. Tuy nhiên, tôi có thể lấy các khóa khác (như khóa cho chữ 'u') bằng cách sử dụng phương pháp này. Có vấn đề gì đã biết ở đây hay tôi đang làm điều gì sai?

Tôi đã thử các biến thể khác không có may mắn:

UIATarget.localTarget().frontMostApp().mainWindow().keyboard().elements()["next"]; 

Dưới đây là một ảnh chụp màn hình của các yếu tố trong UIAKeyboard tôi:

return key dump

Trả lời

1

Các công trình sau đây cho tôi:

UIATarget.localTarget().frontMostApp().mainWindow().keyboard().buttons().firstWi‌​thPredicate("name contains[c] 'next'"); 
2

Tôi dont't có một ví dụ để thử nghiệm, nhưng khi nút "Tiếp theo" là nút UIAButton và không phải là UIAKey, bạn có thể thử:

UIATarget.localTarget().frontMostApp().mainWindow().keyboard().buttons()["next"]; 

Nếu nó không hoạt động, bạn cũng có thể thử

UIATarget.localTarget().frontMostApp().mainWindow().keyboard().buttons()[4]; 
+0

Tôi đã thử cả hai và không có may mắn. Tuy vậy vẫn cảm ơn về những gợi ý. – kodie

+0

Julien, câu trả lời của bạn đã nhắc tôi chơi lại với điều này một lần nữa, và sử dụng các nút() chức năng đã dẫn đến một giải pháp làm việc. Đây là những gì làm việc cho tôi: UIATarget.localTarget(). FrontMostApp(). MainWindow(). Keyboard(). Buttons(). FirstWithPredicate ("name contains [c] 'next'"); Dường như với tôi rằng các nút() ["tiếp theo"] nên đã hoạt động và tôi không biết tại sao nó lại không hoạt động, nhưng các công việc trên không hoạt động. Cảm ơn đề xuất. – kodie

2

Nếu bạn chỉ muốn nhấp vào nó, và bạn biết bàn phím có "bên cạnh" dưới dạng "Phím trả lại" (được xác định trong ngòi bút của bạn), khi đó bạn có thể sử dụng điều này:

app.keyboard().typeString("\n"); 
0

Đối với tôi, bàn phím không nằm trong mainWindow() trong Phân cấp chế độ xem. Nó ở cùng cấp với mainWindow() khi bạn logElementTree() từ cấp cao nhất. Vì vậy, những gì bạn muốn làm là:

UIATarget.localTarget().frontMostApp().keyboard().buttons()["next"]; 

này làm việc cho tôi khi tôi đang cố gắng để nhấn nút "Tìm kiếm" trên bàn phím.

Các vấn đề liên quan