我正在嘗試使用UiAutomator爲Android應用程序(我擁有apk但不是源代碼)編寫UI自動「黑匣子」測試。 我在設置階段打開抽屜的應用程序時遇到問題。到目前爲止,我的代碼是UiAutomator採摘應用程序從應用程序抽屜中測試
@Override
public void setUp() throws Exception {
super.setUp();
mDevice = UiDevice.getInstance(getInstrumentation());
mDevice.pressHome();
//Wait for the app drawer icon to show up on the screen
mDevice.wait(Until.hasObject(By.desc("Apps")), 3000);
//Obtain reference to the app drawer button in order to click it
UiObject drawerIcon = mDevice.findObject(new UiSelector().description("Apps"));
drawerIcon.clickAndWaitForNewWindow();
//Finding and Clicking on the Sunshine app
UiObject drawer = mDevice.findObject(new UiSelector().resourceId("com.sec.android.app.launcher:id/apps_grid"));
UiObject appToTest = mDevice.findObject(new UiSelector().description("app-to-test-description"));
while (!appToTest.exists()) {
drawer.swipeLeft(3);
}
appToTest.clickAndWaitForNewWindow();
}
當我運行測試,應該打開應用程序(然後運行雜色山雀的測試方法,我還沒有寫。) 相反,它會打開抽屜,它掛起。我想有一種更好的方法來識別抽屜並滾動它直到找到正確的應用程序。 這是錯誤日誌。
運行測試
試運行開始
android.support.test.uiautomator.UiObjectNotFoundException:UiSelector [RESOURCE_ID = com.sec.android.app.launcher:ID/apps_grid] 在android.support.test .uiautomator.UiObject.getVisibleBounds(UiObject.java:891) at android.support.test.uiautomator.UiObject.swipeLeft(UiObject.java:315) at com.crisanti.roberto.uturistautomatedtest.UiAutomatorTest.setUp(UiAutomatorTest.java :29) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.j AVA:176) 在android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) 在android.app.Instrumentation $ InstrumentationThread.run(Instrumentation.java:1853)
感謝您提到這個pro-tip:「您可以使用UiAutomatorViewer(在sdk-folder/tools /中)的軟件包名稱。」在應用程序包名稱末尾有一個「.debug」,但我使用的是原始包名稱(不帶後綴),因此返回的意圖始終爲空。這個「.debug」後綴可能來自構建類型。無論如何都讓我瘋狂! – Metallica