android.support.test.uiautomator.UiObjectNotFoundException#printStackTrace ( )源码实例Demo

下面列出了android.support.test.uiautomator.UiObjectNotFoundException#printStackTrace ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

@Test
public void testChangeText_sameActivity() {


    UiObject skipButton = mDevice.findObject(new UiSelector()
            .text("SKIP").className("android.widget.TextView"));

    // Simulate a user-click on the OK button, if found.
    try {
        if (skipButton.exists() && skipButton.isEnabled()) {
                skipButton.click();
        }
    } catch (UiObjectNotFoundException e) {
        e.printStackTrace();
    }
}
 
源代码2 项目: SmoothClicker   文件: ItClickerActivity.java
/**
 * Tests the import feature with its snackbar
 *
 * <i>If the configuration is imported in the JSON files, a snackbar with a good message is displayed</i>
 */
@Test
public void importConfig(){

    l(this, "@Test importConfig");

    try {

        // Display the pop-up
        UiObject menu = mDevice.findObject(
                new UiSelector().className("android.widget.ImageView").description("Autres options") // FIXME Raw french string
        );
        menu.click();
        UiObject submenu = mDevice.findObject(
                new UiSelector().className("android.widget.TextView").text(InstrumentationRegistry.getTargetContext().getString(R.string.action_configuration))
        );
        submenu.click();
        UiObject menuItem = mDevice.findObject(
                new UiSelector().className("android.widget.TextView").text(InstrumentationRegistry.getTargetContext().getString(R.string.action_import))
        );
        menuItem.click();

        // Check the snackbar
        UiObject snackbar = mDevice.findObject(
                new UiSelector().className("android.widget.TextView")
                        .resourceId(PACKAGE_APP_PATH + ":id/snackbar_text")
        );
        assertTrue(snackbar.exists());
        assertEquals(InstrumentationRegistry.getTargetContext().getString(R.string.info_import_success), snackbar.getText());

    } catch ( UiObjectNotFoundException uonfe ){
        uonfe.printStackTrace();
        fail(uonfe.getMessage());
    }

}
 
源代码3 项目: SmoothClicker   文件: ItSettingsActivity.java
/**
 * Opens the settings screen from the menu
 */
private void openSettingsScreenFromMenu(){

    try {

        // Clicks the three-points-icon
        UiObject menu = mDevice.findObject(
                new UiSelector()
                        .className("android.widget.ImageView")
                        .packageName(PACKAGE_APP_PATH)
                                //.descriptionContains("Plus d'options") // WARNING FIXME French string used, use instead system R values
                        .descriptionContains("Autres options") // WARNING FIXME French string used, use instead system R values
        );
        menu.click();

        // Clicks on the settings item
        String s = InstrumentationRegistry.getTargetContext().getString(R.string.action_settings);
        UiObject itemParams = mDevice.findObject(
                new UiSelector()
                        .className("android.widget.TextView")
                        .packageName(PACKAGE_APP_PATH)
                        .resourceId(PACKAGE_APP_PATH + ":id/title")
                        .text(s)
        );
        itemParams.click();
        w(1000);

    } catch ( UiObjectNotFoundException uonfe ){
        uonfe.printStackTrace();
        fail(uonfe.getMessage());
    }
    w(1000);

}
 
源代码4 项目: SmoothClicker   文件: ItStandaloneModeDialog.java
/**
 * Test the click on the cursor's right arrow
 *
 * <i>If the user clicks on then cursor's right arrow, the next item in the swipe cursor must be displayed</i>
 */
@Test
public void clickRightArrow(){

    l(this, "@Test clickRightArrow");

    try {

        // Click on the (not) green arrow
        for ( int i = 1; i <= steps; i++ ){
            // Get the selector
            UiObject rightArrow = mDevice.findObject(
                    new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/swipeselector_layout_rightButton")
            );
            rightArrow.click();
        }

        // Check the last item
        String[] titles = InstrumentationRegistry.getTargetContext().getResources().getStringArray(R.array.standalone_mode_titles);
        String[] descs = InstrumentationRegistry.getTargetContext().getResources().getStringArray(R.array.standalone_mode_descriptions);
        String expectedLastItemTitle = titles[steps];
        String expectedLastItemDesc = descs[steps];

        UiObject lastItemTitle = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/swipeselector_content_title")
        );
        assertEquals(expectedLastItemTitle, lastItemTitle.getText());

        UiObject lastItemDesc = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/swipeselector_content_description")
        );
        assertEquals(expectedLastItemDesc, lastItemDesc.getText());

    } catch ( UiObjectNotFoundException uonfe ){
        uonfe.printStackTrace();
        fail( uonfe.getMessage() );
    }

}
 
源代码5 项目: SmoothClicker   文件: ItSettingsActivity.java
/**
 * @param text - The text of the field to get
 * @param newValue - The new value
 */
private void resetFieldWithText( String text, String newValue ){

    if ( text == null || text.length() <= 0 ){
        fail("Wrong test");
    }

    try {
        // Display the dialog
        UiObject field = mDevice.findObject(
                new UiSelector()
                        .className("android.widget.TextView")
                        .packageName(PACKAGE_APP_PATH)
                        .resourceId("android:id/title")
                        .text(text)
        );
        field.click();
        // Change the value
        field = mDevice.findObject(
                new UiSelector()
                        .className("android.widget.EditText")
                        .packageName(PACKAGE_APP_PATH)
                        .resourceId("android:id/edit")
        );
        field.setText(newValue);
        // Confirm
        UiObject button = mDevice.findObject(
                new UiSelector()
                        .className("android.widget.Button")
                        .packageName(PACKAGE_APP_PATH)
                        .resourceId("android:id/button1")
        );
        button.click();
    } catch ( UiObjectNotFoundException uonfe ){
        uonfe.printStackTrace();
        fail(uonfe.getMessage());
    }

}
 
源代码6 项目: SmoothClicker   文件: ItClickerActivity.java
/**
 * Test the button for selecting points
 *
 * <i>If the button to select points is clicked, the activity to select points have to be launched</i>
 * <i>If in this activity we click on back, the main activity  must be displayed and the previous activity finished</i>
 */
@Test
public void selectPointsButton(){

    l(this, "@Test selectPointsButton");

    try {

        // Open the arc menu
        UiObject arcMenu = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/fabAction")
        );
        arcMenu.click();

        // Click on the button
        UiObject selectPointsFab = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/fabSelectPoint")
        );
        selectPointsFab.click();

        // UIAutomator seems to be useless about getting the current activity (deprecated methods)
        // so check if the enw activity's layout is displayed
        UiObject newActivityMainLayout = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/translucentMainView")
        );
        w(2000);
        assertTrue(newActivityMainLayout.exists());

        // Press back and check if we are in the previous activity (i.e. arc menu displayed)
        mDevice.pressBack();
        w(2000);
        assertTrue(arcMenu.exists());

    } catch ( UiObjectNotFoundException uonfe ){
        uonfe.printStackTrace();
        fail( uonfe.getMessage() );
    }

}
 
源代码7 项目: SmoothClicker   文件: ItClickerActivity.java
/**
 * Tests the long clicks on the floating action button for start in the arc menu
 *
 * <i>A long click on the button to use to start the process should display a snackbar with an explain message</i>
 */
@Test
public void longClickOnArcMenuStartItem(){

    l(this, "@Test longClickOnArcMenuStartItem");

    String expectedText = InstrumentationRegistry.getTargetContext().getString(R.string.info_message_start);

    try {

        /*
         * Display the floating action buttons in the arc menu
         */
        UiObject arcMenu = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/fabAction")
        );
        arcMenu.click();
        arcMenu.waitForExists(WAIT_FOR_EXISTS_TIMEOUT);

        /*
         * The floating action button
         */
        UiObject fab = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH+":id/fabStart")
        );
        fab.waitForExists(WAIT_FOR_EXISTS_TIMEOUT);
        assertTrue(fab.isLongClickable());
        fab.swipeLeft(100); //fab.longClick() makes clicks sometimes, so swipeLeft() is a trick to make always a longclick
        UiObject snack = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/snackbar_text")
        );

        assertEquals(expectedText, snack.getText());

    } catch ( UiObjectNotFoundException uonfe ){
        uonfe.printStackTrace();
        fail( uonfe.getMessage() );
    }

}
 
源代码8 项目: SmoothClicker   文件: ItClickerActivity.java
/**
 * Tests the long clicks on the floating action button for stop in the arc menu
 *
 * <i>A long click on the button to use to stop the process should display a snackbar with an explain message</i>
 */
@Test
public void longClickOnArcMenuStopItem(){

    l(this, "@Test longClickOnArcMenuStopItem");

    String expectedString = InstrumentationRegistry.getTargetContext().getString(R.string.info_message_stop);

    try {

        /*
         * Display the floating action buttons in the arc menu
         */
        UiObject arcMenu = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/fabAction")
        );
        arcMenu.click();
        arcMenu.waitForExists(WAIT_FOR_EXISTS_TIMEOUT);

        /*
         * The floating action button
         */
        UiObject fab = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH+":id/fabStop")
        );
        fab.waitForExists(WAIT_FOR_EXISTS_TIMEOUT);
        assertTrue(fab.isLongClickable());
        fab.swipeLeft(100); //fab.longClick() makes clicks sometimes, so swipeLeft() is a trick to make always a longclick
        UiObject snack = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/snackbar_text")
        );

        assertEquals(expectedString, snack.getText());

    } catch ( UiObjectNotFoundException uonfe ){
        uonfe.printStackTrace();
        fail( uonfe.getMessage() );
    }

}
 
源代码9 项目: SmoothClicker   文件: ItClickerActivity.java
/**
 * Tests the long clicks on the floating action button for SU grant in the arc menu
 *
 * <i>A long click on the button to use to get the SU grant should display a snackbar with an explain message</i>
 */
@Test
public void longClickOnArcMenuSuGrantItem(){

    l(this, "@Test longClickOnArcMenuSuGrantItem");

    String expectedString = InstrumentationRegistry.getTargetContext().getString(R.string.info_message_request_su);

    try {

        /*
         * Display the floating action buttons in the arc menu
         */
        UiObject arcMenu = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/fabAction")
        );
        arcMenu.click();
        arcMenu.waitForExists(WAIT_FOR_EXISTS_TIMEOUT);

        /*
         * The floating action button
         */
        UiObject fab = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH+":id/fabRequestSuGrant")
        );
        fab.waitForExists(WAIT_FOR_EXISTS_TIMEOUT);
        assertTrue(fab.isLongClickable());
        fab.swipeLeft(100); //fab.longClick() makes clicks sometimes, so swipeLeft() is a trick to make always a longclick
        UiObject snack = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/snackbar_text")
        );

        assertEquals(expectedString, snack.getText());

    } catch ( UiObjectNotFoundException uonfe ){
        uonfe.printStackTrace();
        fail( uonfe.getMessage() );
    }

}
 
源代码10 项目: SmoothClicker   文件: ItClickerActivity.java
/**
 * Tests the long clicks on the floating action button for new point in the arc menu
 *
 * <i>A long click on the button to use to add points to click on should display a snackbar with an explain message</i>
 */
@Test
public void longClickOnArcMenuNewPointItem(){

    l(this, "@Test longClickOnArcMenuNewPointItem");

    String expectedString = InstrumentationRegistry.getTargetContext().getString(R.string.info_message_new_point);
    try {

        /*
         * Display the floating action buttons in the arc menu
         */
        UiObject arcMenu = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/fabAction")
        );
        arcMenu.click();
        arcMenu.waitForExists(WAIT_FOR_EXISTS_TIMEOUT);

        /*
         * The floating action button
         */
        UiObject fab = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH+":id/fabSelectPoint")
        );
        fab.waitForExists(WAIT_FOR_EXISTS_TIMEOUT);
        assertTrue(fab.isLongClickable());
        fab.swipeUp(100); //fab.longClick() makes clicks sometimes, so swipeUp() is a trick to make always a longclick
        UiObject snack = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/snackbar_text")
        );

        assertEquals(expectedString, snack.getText());

    } catch ( UiObjectNotFoundException uonfe ){
        uonfe.printStackTrace();
        fail( uonfe.getMessage() );
    }

}
 
源代码11 项目: SmoothClicker   文件: ItClickerActivity.java
/**
 * Test if the switch changes (for the start type) modifies well the delay field
 *
 * <i>If the switch for the start type is ON, the delay field is enabled.</i>
 * <i>If the switch for the start type is OFF, the delay field is disabled.</i>
 */
@Test
public void changeDelayOnSwitchChanges(){

    l(this, "@Test changeDelayOnSwitchChanges");

    try {

        UiObject startSwitch = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/sTypeOfStartDelayed")
        );

        UiObject delayField = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/etDelay")
        );

        // Check and uncheck the switch
        for ( int i = 1; i <= 2; i++ ) {
            startSwitch.click();
            if (startSwitch.isChecked()) {
                assertTrue(delayField.isEnabled());
            } else {
                assertFalse(delayField.isEnabled());
            }
        }

    } catch ( UiObjectNotFoundException uonfe ){
        uonfe.printStackTrace();
        fail( uonfe.getMessage() );
    }

}
 
源代码12 项目: SmoothClicker   文件: ItClickerActivity.java
/**
 * Test if the endless repeat checkbox changes modifies well the repeat field
 *
 * <i>If the check box for the endless repeat is checked, the repeat field is disabled</i>
 * <i>If the check box for the endless repeat is unchecked, the repeat field is enabled</i>
 */
@Test
public void changeRepeatOnCheckboxChanges(){

    l(this, "@Test changeRepeatOnCheckboxChanges");

    try {

        UiObject endlessCheckbox = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/scEndlessRepeat")
        );

        UiObject repeatField = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/etRepeat")
        );

        // Check and uncheck the switch
        for ( int i = 1; i <= 2; i++ ) {
            endlessCheckbox.click();
            if (endlessCheckbox.isChecked()) {
                assertFalse(repeatField.isEnabled());
            } else {
                assertTrue(repeatField.isEnabled());
            }
        }

    } catch ( UiObjectNotFoundException uonfe ){
        uonfe.printStackTrace();
        fail( uonfe.getMessage() );
    }

}
 
源代码13 项目: SmoothClicker   文件: ItClickerActivity.java
/**
     * Test the click on the button for the "clean points" feature
     *
     * <i>If the button to clean points is clicked, the list of points has to be cleaned</i>
     * <i>If the button to clean points is clicked and no values has been changed, the values still remain the default ones</i>
     */
    @Test
    public void clickCleanPoints() {

        l(this, "@Test clickCleanPoints");

        try {

            // Get the menu item
            UiObject mi = mDevice.findObject(
                    new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/action_clean_all")
            );

            w(5000); // If there is no wait, Espresso fails to get the floating action button

            // Bind the list
            fillSpinnerAsUser();

            // Click on the menu item
            mi.click();

            // Check if the values have been made empty
//            onView(withId(R.id.clickerActivityMainLayout)).perform(swipeUp());
//            onView(withId(R.id.sPointsToClick)).perform(click());
//            onView(withId(R.id.sPointsToClick)).check(ViewAssertions.matches(withListSize(1)));

            // Test again to check if the default values remain
            mi.click();
            //           onView(withId(R.id.sPointsToClick)).check(ViewAssertions.matches(withListSize(1)));

        } catch ( UiObjectNotFoundException uonfe ){
            uonfe.printStackTrace();
            fail( uonfe.getMessage() );
        }

    }
 
源代码14 项目: SmoothClicker   文件: ItClickerActivity.java
/**
 * Test the start button without having defined clicks
 *
 * <i>If the button to start the click process is clicked, and no point has been defined, a snackbar with an error message has to be displayed</i>
 */
@Test
public void startButtonWithoutDefinedPoints(){

    l(this, "@Test startButtonWithoutDefinedPoints");

    try {

        // Open the arc menu
        UiObject arcMenu = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/fabAction")
        );
        arcMenu.click();

        // Click on the button
        UiObject startFab = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/fabStart")
        );
        startFab.click();

        // Check the snackbar
        UiObject snack = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/snackbar_text")
        );

        String expectedString = InstrumentationRegistry.getTargetContext().getString(R.string.error_message_no_click_defined);
        assertEquals(expectedString, snack.getText());

    } catch ( UiObjectNotFoundException uonfe ){
        uonfe.printStackTrace();
        fail( uonfe.getMessage() );
    }

}
 
源代码15 项目: SmoothClicker   文件: ItClickerActivity.java
/**
 * Test the stop button without having started the process
 *
 * <i>If the button to stop the click process is clicked, and no process was working, a snackbar with an error message ahs to be displayed/i>
 */
@Test
public void stopButtonWithoutStartedProcess(){

    l(this, "@Test stopButtonWithoutStartedProcess");

    try {

        // Open the arc menu
        UiObject arcMenu = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/fabAction")
        );
        arcMenu.click();

        // Click on the button
        UiObject stopFab = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/fabStop")
        );
        stopFab.click();

        // Check the snackbar
        UiObject snack = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/snackbar_text")
        );

        String expectedString = InstrumentationRegistry.getTargetContext().getString(R.string.error_message_was_not_working);
        assertEquals(expectedString, snack.getText());

    } catch ( UiObjectNotFoundException uonfe ){
        uonfe.printStackTrace();
        fail( uonfe.getMessage() );
    }

}
 
源代码16 项目: SmoothClicker   文件: ItStandaloneModeDialog.java
/**
 * Test the click on the cursor's left arrow
 *
 * <i>If the user clicks on then cursor's left arrow, the previous item in the swipe cursor must be displayed</i>
 */
@Test
public void clickLeftArrow(){

    l(this, "@Test clickLeftArrow");

    try {

        // Click on the arrow to be at the end of the cursor
        for ( int i = 1; i <= steps; i++ ){
            // Get the selector
            UiObject rightArrow = mDevice.findObject(
                    new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/swipeselector_layout_rightButton")
            );
            rightArrow.click();
        }
        // Go backward
        for ( int i = 1; i <= steps; i++ ){
            // Get the selector
            UiObject leftArrow = mDevice.findObject(
                    new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/swipeselector_layout_leftButton")
            );
            leftArrow.click();
        }

        // Check the first item
        String[] titles = InstrumentationRegistry.getTargetContext().getResources().getStringArray(R.array.standalone_mode_titles);
        String[] descs = InstrumentationRegistry.getTargetContext().getResources().getStringArray(R.array.standalone_mode_descriptions);
        String expectedFirstItemTitle = titles[0];
        String expectedFirstItemDesc = descs[0];

        UiObject lastItemTitle = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/swipeselector_content_title")
        );
        assertEquals(expectedFirstItemTitle, lastItemTitle.getText());

        UiObject lastItemDesc = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/swipeselector_content_description")
        );
        assertEquals(expectedFirstItemDesc, lastItemDesc.getText());

    } catch ( UiObjectNotFoundException uonfe ){
        uonfe.printStackTrace();
        fail( uonfe.getMessage() );
    }

}
 
源代码17 项目: SmoothClicker   文件: ItSettingsActivity.java
/**
     * Tests the seekbar for the threshold sued in the picture recognition system
     */
    @Test
    public void thresholdSeekBar(){

        l(this, "@Test thresholdSeekBar");

        try {

            // Swipe to the bottom of the view to get the seekbar
            UiObject list = mDevice.findObject(
                    new UiSelector()
                            .className("android.widget.ListView")
                            .packageName(PACKAGE_APP_PATH)
                            .resourceId("android:id/list")
            );
            list.swipeUp(100);
            list.swipeUp(100);

            // Get the seek bar
            UiObject seekBar = mDevice.findObject(
                    new UiSelector()
                            .className("android.widget.SeekBar")
                            .packageName(PACKAGE_APP_PATH)
            );

            // Swipe to the very right and check if we are at 100%
            seekBar.swipeRight(100);

            UiObject seekBarValue = mDevice.findObject(
                    new UiSelector()
                            .className("android.widget.TextView")
                            .packageName(PACKAGE_APP_PATH)
                            .resourceId(PACKAGE_APP_PATH + ":id/seekbar_value")
            );
            assertEquals( "10", seekBarValue.getText() );

            // Swipe to the very left and check if we are at 100%
            seekBar.swipeLeft(100);

            seekBarValue = mDevice.findObject(
                    new UiSelector()
                            .className("android.widget.TextView")
                            .packageName(PACKAGE_APP_PATH)
                            .resourceId(PACKAGE_APP_PATH+":id/seekbar_value")
            );
            assertEquals("1", seekBarValue.getText());
            w(1000);

//            // Click on the item to get the dialog to fill the seekbar: change the value but cancel
//            seekBarValue.click();
//            UiObject customValue = mDevice.findObject(
//                    new UiSelector()
//                            .className("android.widget.EditText")
//                            .packageName(PACKAGE_APP_PATH)
//                            .resourceId(PACKAGE_APP_PATH + ":id/customValue")
//            );
//            customValue.setText("42");
//            UiObject button = mDevice.findObject(
//                    new UiSelector()
//                            .className("android.widget.Button")
//                            .packageName(PACKAGE_APP_PATH)
//                            .resourceId(PACKAGE_APP_PATH + ":id/btn_cancel")
//            );
//            button.click();
//            assertEquals("1", seekBarValue.getText());
//            w(1000);
//
//            // Click on the item to get the dialog to fill the seekbar: change the value but apply
//            seekBarValue.click();
//            customValue = mDevice.findObject(
//                    new UiSelector()
//                            .className("android.widget.EditText")
//                            .packageName(PACKAGE_APP_PATH)
//                            .resourceId(PACKAGE_APP_PATH + ":id/customValue")
//            );
//            customValue.setText("23");
//            button = mDevice.findObject(
//                    new UiSelector()
//                            .className("android.widget.Button")
//                            .packageName(PACKAGE_APP_PATH)
//                            .resourceId(PACKAGE_APP_PATH + ":id/btn_apply")
//            );
//            button.click();
//            assertEquals("23", seekBarValue.getText());
//            w(1000);

        } catch ( UiObjectNotFoundException uonfe ){
            uonfe.printStackTrace();
            fail(uonfe.getMessage());
        }

    }
 
源代码18 项目: SmoothClicker   文件: ItClickerActivity.java
/**
 * Tests the export feature with its snackbar and its dedicated action button
 *
 * <i>If the configuration is exported in the JSON files, a snackbar with a good message is displayed with an action button</i>
 */
@Test
public void exportConfig(){

    l(this, "@Test exportConfig");

    try {

        // Display the pop-up
        UiObject menu = mDevice.findObject(
                new UiSelector().className("android.widget.ImageView").description("Autres options") // FIXME Raw french string
        );
        menu.click();
        UiObject submenu = mDevice.findObject(
                new UiSelector().className("android.widget.TextView").text(InstrumentationRegistry.getTargetContext().getString(R.string.action_configuration))
        );
        submenu.click();
        UiObject menuItem = mDevice.findObject(
                new UiSelector().className("android.widget.TextView").text(InstrumentationRegistry.getTargetContext().getString(R.string.action_export))
        );
        menuItem.click();

        // Check the snackbar
        UiObject snackbar = mDevice.findObject(
                new UiSelector().className("android.widget.TextView")
                        .resourceId(PACKAGE_APP_PATH + ":id/snackbar_text")
        );
        assertTrue(snackbar.exists());
        assertEquals(InstrumentationRegistry.getTargetContext().getString(R.string.info_export_success), snackbar.getText());

        // Check the action button
        UiObject actionButton = mDevice.findObject(
                new UiSelector().className("android.widget.Button")
                        .resourceId(PACKAGE_APP_PATH + ":id/snackbar_action")
        );
        assertTrue(actionButton.exists());
        assertEquals(InstrumentationRegistry.getTargetContext().getString(R.string.snackbar_see_config_file), actionButton.getText());

    } catch ( UiObjectNotFoundException uonfe ){
        uonfe.printStackTrace();
        fail(uonfe.getMessage());
    }

}
 
源代码19 项目: SmoothClicker   文件: ItSettingsActivity.java
/**
 * Test if the item about help in the Settings activity starts the intro screens activity
 */
@Test
public void help(){

    l(this, "@Test help");

    try {

        // Swipe to the bottom of the view to get the credits field in an inner preference screen
        UiObject list = mDevice.findObject(
                new UiSelector()
                        .className("android.widget.ListView")
                        .packageName(PACKAGE_APP_PATH)
                        .resourceId("android:id/list")
        );

        list.swipeUp(100);
        list.swipeUp(100);

        String innerPreferenceScreenTitle = InstrumentationRegistry.getTargetContext().getString(R.string.pref_about_subtitle);
        UiObject aboutRow = mDevice.findObject(
                new UiSelector()
                        .className("android.widget.TextView")
                        .packageName(PACKAGE_APP_PATH)
                        .resourceId("android:id/title")
                        .text(innerPreferenceScreenTitle)
        );
        aboutRow.click();

        // Clicks on the credits row
        String s = InstrumentationRegistry.getTargetContext().getString(R.string.pref_key_help_title);
        UiObject helpRow = mDevice.findObject(
                new UiSelector()
                        .className("android.widget.TextView")
                        .packageName(PACKAGE_APP_PATH)
                        .resourceId("android:id/title")
                        .text(s)
        );
        helpRow.click();
        w(1000);

        assertEquals(IntroScreensActivity.class.getSimpleName(), getActivityInstance().getClass().getSimpleName());

    } catch ( UiObjectNotFoundException uonfe ){
        fail(uonfe.getMessage());
        uonfe.printStackTrace();
    }

}
 
源代码20 项目: SmoothClicker   文件: ItStandaloneModeDialog.java
/**
 * Tests if the notification is displayed when the standalone mode is running
 *
 * <i>If the standalone mode is running, a dedicated notification is displayed</i>
 */
@Test
public void notificationOnGoing(){

    l(this, "@Test notificationOnGoing");

    prepareNeededFiles();

    // Start a standalone mode
    try {

        // Choose the OCR-like standalone mode (the alst of the list)
        for ( int i = 1; i <= steps; i++ ){
            UiObject rightArrow = mDevice.findObject(
                    new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/swipeselector_layout_rightButton")
            );
            rightArrow.click();
        }

        // Click on the OK button
        UiObject btOk = mDevice.findObject(
                new UiSelector().resourceId(PACKAGE_APP_PATH + ":id/btCreate")
        );
        btOk.click();

        // Check the notification
        String notificationText = InstrumentationRegistry.getTargetContext().getString(R.string.notif_content_text_clicks_on_going_standalone);
        UiObject notification = null;
        if ( Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT_WATCH ){
            notification = mDevice.findObject(
                    new UiSelector()
                            .resourceId("android:id/text")
                            .className("android.widget.TextView")
                            .packageName("pylapp.smoothclicker.android")
                            .textContains(notificationText));
        } else {
            notification = mDevice.findObject(
                    new UiSelector()
                            .resourceId("android:id/text")
                            .className("android.widget.TextView")
                            .packageName("com.android.systemui")
                            .textContains(notificationText));
        }

        mDevice.openNotification();
        notification.waitForExists(2000);
        w(10000);
        assertTrue(notification.exists());

    } catch ( UiObjectNotFoundException uonfe ){
        uonfe.printStackTrace();
        fail( uonfe.getMessage() );
    }

}