Tôi đang tự động thử nghiệm luồng trong ứng dụng của mình, nơi tôi cài đặt quản trị viên thiết bị. Để kích hoạt quản trị viên thiết bị trên hầu hết các thiết bị (giả sử ở đây tôi không có một số API doanh nghiệp cho phép tôi làm điều này giống như những gì Samsung cung cấp), hệ thống sẽ hiển thị cửa sổ bật lên cho người dùng sau đó phải nhấp vào nút "Kích hoạt".Cách chèn sự kiện nhấp bằng Android UiAutomation.injectInputEvent
Tôi đang sử dụng Robotium và Android JUnit để lái thử nghiệm của mình. Trong một trường hợp thử nghiệm bình thường, người ta chỉ có thể tương tác với ứng dụng và quy trình được thử nghiệm chứ không phải bất kỳ hoạt động hệ thống nào xuất hiện.
Yêu cầu UiAutomation cho phép bạn tương tác với các ứng dụng khác bằng cách tận dụng Accessibility Framework và sau đó cho phép một đến inject arbitrary input events.
Vì vậy, - đây là những gì tôi đang cố gắng để làm:
public class AbcTests extends ActivityInstrumentationTestCase2<AbcActivity> {
private Solo mSolo
@Override
public void setUp() {
mSolo = new Solo(getInstrumentation(), getActivity());
}
...
public void testAbc(){
final UiAutomation automation = getInstrumentation().getUiAutomation();
MotionEvent motionDown = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), KeyEvent.ACTION_DOWN,
100, 100, 0);
// This line was added in to give a complete solution
motionDown.setSource(InputDevice.SOURCE_TOUCHSCREEN);
automation.injectInputEvent(motionDown, true)
MotionEvent motionUp = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), KeyEvent.ACTION_UP,
100, 100, 0);
// This line was added in to give a complete solution
motionUp.setSource(InputDevice.SOURCE_TOUCHSCREEN);
automation.injectInputEvent(motionUp, true)
motionUp.recycle();
motionDown.recycle();
}
}
Khi thử nghiệm này được điều hành hệ thống popup để "Kích hoạt" người quản trị thiết bị đang hoạt động, và tôi muốn chỉ cần bấm trên màn hình. Tôi đã hardcoded trong 100,100 là vị trí cho các nhấp chuột cho các mục đích của câu hỏi này, nhưng thực tế tôi sẽ bấm vào góc dưới bên phải của màn hình để tôi có thể nhấn nút.
Tôi không nhận được bất kỳ sự kiện nhấp nào xảy ra trên màn hình. Có ai có kinh nghiệm với điều này? Có cách nào khác để làm những gì tôi muốn làm không? Từ sự hiểu biết của tôi, có rất ít công cụ làm điều này.
Cảm ơn.
Cập nhật Added setSource
cho câu trả lời đúng
Tôi nghĩ bạn nên đưa ra các setSource() gọi mà bạn chỉnh sửa trong. Các câu hỏi ban đầu phải chứng minh được vấn đề, mà câu trả lời cho thấy dung dịch. Vì nó là, so sánh hai nguyên nhân gây nhầm lẫn vì cả hai đều làm việc. – Project