Java 类android.support.test.uiautomator.BySelector 实例源码
项目:ChimpCheck
文件:WildCardManager.java
public ArrayList<UiObject2> retrieveUiObject2s(BySelector topLevelSelector, BySelector childSelector, int depth) throws UiObjectNotFoundException {
if (depth == 0) { return new ArrayList<>(); }
ArrayList<UiObject2> currUiObjects = retrieveTopLevelUiObjects(topLevelSelector);
ArrayList<UiObject2> baseUiObjects = new ArrayList<>();
while (depth > 0 && currUiObjects.size() > 0) {
ArrayList<UiObject2> tempUiObjects = new ArrayList<>();
for(UiObject2 currUiObject: currUiObjects) {
if (currUiObject.getChildCount() != 0) {
tempUiObjects.addAll( retrieveChildUiObjects(currUiObject, childSelector) );
} else {
baseUiObjects.add( currUiObject );
}
}
currUiObjects = tempUiObjects;
depth--;
}
String str = "/***** Inferred Actionable UI Objects *****/\n";
for(UiObject2 candidate: new HashSet<UiObject2>(baseUiObjects)) {
str += "Found candidate: " + candidate.getClassName() + " " + candidate.getText() + " " + candidate.getContentDescription() + "\n";
}
str += "/******************************************/";
Log.i("Chimp-wildCardManager",str);
return baseUiObjects;
}
项目:UIAutomatorWD
文件:ElementController.java
private static BySelector getSelector(String strategy, String text) throws Exception {
BySelector selector = null;
switch (strategy) {
case "CLASS_NAME":
selector = By.clazz(text);
break;
case "NAME":
selector = By.desc(text);
if(selector == null || elements.getmDevice().findObject(selector) == null){
selector = By.text(text);
}
break;
case "ID":
selector = By.res(text);
break;
}
return selector;
}
项目:android_packages_apps_tv
文件:ParentalControlsTest.java
/**
* Prepare the need for testRatingDependentSelect.
* 1. Turn on parental control if it's off.
* 2. Make sure Japan rating system is selected.
*/
private void prepareParentalControl() {
showParentalControl();
switchParentalControl(R.string.option_toggle_parental_controls_off);
// Show all rating systems.
mSidePanelHelper.assertNavigateToItem(R.string.option_program_restrictions);
mDevice.pressDPadCenter();
BySelector bySidePanel = mSidePanelHelper.bySidePanelTitled(
R.string.option_program_restrictions);
assertWaitForCondition(mDevice, Until.hasObject(bySidePanel));
mSidePanelHelper.assertNavigateToItem(R.string.option_country_rating_systems);
mDevice.pressDPadCenter();
bySidePanel = mSidePanelHelper.bySidePanelTitled(R.string.option_country_rating_systems);
assertWaitForCondition(mDevice,Until.hasObject(bySidePanel));
mSidePanelHelper.assertNavigateToItem(R.string.option_see_all_rating_systems);
mDevice.pressDPadCenter();
// Make sure Japan rating system is selected.
UiObject2 ratingSystemCheckBox = mSidePanelHelper.assertNavigateToItem("Japan")
.findObject(ByResource.id(mTargetResources, R.id.check_box));
if (!ratingSystemCheckBox.isChecked()) {
mDevice.pressDPadCenter();
getInstrumentation().waitForIdleSync();
}
mDevice.pressBack();
}
项目:android_packages_apps_tv
文件:ParentalControlsTest.java
private void showParentalControl() {
// Show menu and select parental controls.
mMenuHelper.showMenu();
mMenuHelper.assertPressOptionsSettings();
assertWaitForCondition(mDevice, Until.hasObject(mBySettingsSidePanel));
mSidePanelHelper.assertNavigateToItem(R.string.settings_parental_controls);
mDevice.pressDPadCenter();
// Enter pin code.
DialogHelper dialogHelper = new DialogHelper(mDevice, mTargetResources);
dialogHelper.assertWaitForPinDialogOpen();
dialogHelper.enterPinCodes();
dialogHelper.assertWaitForPinDialogClose();
BySelector bySidePanel = mSidePanelHelper.bySidePanelTitled(
R.string.menu_parental_controls);
assertWaitForCondition(mDevice, Until.hasObject(bySidePanel));
}
项目:android_packages_apps_tv
文件:PlayControlsRowViewTest.java
public void testKeepPausedWhileParentalControlChange() {
// Pause the playback.
mDevice.pressKeyCode(KeyEvent.KEYCODE_MEDIA_PAUSE);
mMenuHelper.assertWaitForMenu();
assertButtonHasFocus(BUTTON_INDEX_PLAY_PAUSE);
// Show parental controls fragment.
mMenuHelper.assertPressOptionsSettings();
assertWaitForCondition(mDevice, Until.hasObject(mBySettingsSidePanel));
mSidePanelHelper.assertNavigateToItem(R.string.settings_parental_controls);
mDevice.pressDPadCenter();
DialogHelper dialogHelper = new DialogHelper(mDevice, mTargetResources);
dialogHelper.assertWaitForPinDialogOpen();
dialogHelper.enterPinCodes();
dialogHelper.assertWaitForPinDialogClose();
BySelector bySidePanel = mSidePanelHelper.bySidePanelTitled(
R.string.menu_parental_controls);
assertWaitForCondition(mDevice, Until.hasObject(bySidePanel));
mDevice.pressEnter();
mDevice.pressEnter();
mDevice.pressBack();
mDevice.pressBack();
// Return to the main menu.
mMenuHelper.assertWaitForMenu();
assertButtonHasFocus(BUTTON_INDEX_PLAY_PAUSE);
}
项目:android_packages_apps_tv
文件:LiveChannelsUiDeviceHelper.java
public void assertAppStarted() {
Intent intent = mContext.getPackageManager()
.getLaunchIntentForPackage(Constants.TV_APP_PACKAGE);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); // Clear out any previous instances
mContext.startActivity(intent);
// Wait for idle state before checking the channel banner because waitForCondition() has
// timeout.
mUiDevice.waitForIdle();
// Make sure that the activity is resumed.
waitForCondition(mUiDevice, Until.hasObject(Constants.TV_VIEW));
Assert.assertTrue(Constants.TV_APP_PACKAGE + " did not start", mUiDevice
.wait(Until.hasObject(By.pkg(Constants.TV_APP_PACKAGE).depth(0)),
APPLICATION_START_TIMEOUT_MSEC));
BySelector welcome = ByResource.id(mTargetResources, com.android.tv.R.id.intro);
if (mUiDevice.hasObject(welcome)) {
Log.i(TAG, "Welcome screen shown. Clearing dialog by pressing back");
mUiDevice.pressBack();
}
}
项目:appium-uiautomator2-server
文件:UiObject2Element.java
public Object getChild(final Object selector) throws UiObjectNotFoundException, InvalidSelectorException, ClassNotFoundException {
if (selector instanceof UiSelector) {
/**
* We can't find the child element with UiSelector on UiObject2,
* as an alternative creating UiObject with UiObject2's AccessibilityNodeInfo
* and finding the child element on UiObject.
*/
AccessibilityNodeInfo nodeInfo = AccessibilityNodeInfoGetter.fromUiObject(element);
UiSelector uiSelector = new UiSelector();
CustomUiSelector customUiSelector = new CustomUiSelector(uiSelector);
uiSelector = customUiSelector.getUiSelector(nodeInfo);
UiObject uiObject = (UiObject) CustomUiDevice.getInstance().findObject(uiSelector);
AccessibilityNodeInfo uiObject_nodeInfo = AccessibilityNodeInfoGetter.fromUiObject(element);
return uiObject.getChild((UiSelector) selector);
}
return element.findObject((BySelector) selector);
}
项目:appium-uiautomator2-server
文件:UiObject2Element.java
public List<Object> getChildren(final Object selector, final By by) throws UiObjectNotFoundException, InvalidSelectorException, ClassNotFoundException {
if (selector instanceof UiSelector) {
/**
* We can't find the child elements with UiSelector on UiObject2,
* as an alternative creating UiObject with UiObject2's AccessibilityNodeInfo
* and finding the child elements on UiObject.
*/
AccessibilityNodeInfo nodeInfo = AccessibilityNodeInfoGetter.fromUiObject(element);
UiSelector uiSelector = new UiSelector();
CustomUiSelector customUiSelector = new CustomUiSelector(uiSelector);
uiSelector = customUiSelector.getUiSelector(nodeInfo);
UiObject uiObject = (UiObject) CustomUiDevice.getInstance().findObject(uiSelector);
String id = UUID.randomUUID().toString();
AndroidElement androidElement = getAndroidElement(id, uiObject, by);
return androidElement.getChildren(selector, by);
}
return (List)element.findObjects((BySelector) selector);
}
项目:ChimpCheck
文件:Performer.java
public Performer(String displayAction, ChimpDriver chimpDriver, ViewManager viewManager,
WildCardManager wildCardManager, BySelector wildCardSelector, BySelector wildCardChildSelector,
Matcher<View> userDefinedMatcher){
this.displayAction = displayAction;
this.chimpDriver = chimpDriver;
this.viewManager = viewManager;
this.wildCardManager = wildCardManager;
this.wildCardSelector = wildCardSelector;
this.wildCardChildSelector = wildCardChildSelector;
this.userDefinedMatcher = userDefinedMatcher;
}
项目:FlickLauncher
文件:LauncherInstrumentationTestCase.java
/**
* Scrolls the {@param container} until it finds an object matching {@param condition}.
* @return the matching object.
*/
protected UiObject2 scrollAndFind(UiObject2 container, BySelector condition) {
do {
UiObject2 widget = container.findObject(condition);
if (widget != null) {
return widget;
}
} while (container.scroll(Direction.DOWN, 1f));
return container.findObject(condition);
}
项目:UIAutomatorWD
文件:ElementController.java
private static JSONArray getMultiElements(final BySelector sel) throws Exception {
JSONArray res;
List<Element> foundElements = new ArrayList<Element>();
final List<Element> elementsFromSelector = getElements().getMultiElement(sel);
foundElements.addAll(elementsFromSelector);
res = elementsToJSONArray(foundElements);
return res;
}
项目:UIAutomatorWD
文件:Elements.java
public Element getElement(BySelector sel) throws Exception {
UiObject2 el = mDevice.findObject(sel);
Element result = addElement(el);
if (el != null) {
return result;
} else {
throw new Exception("not found");
}
}
项目:UIAutomatorWD
文件:Elements.java
public List<Element> getMultiElement(BySelector sel) throws Exception {
List<UiObject2> el = mDevice.findObjects(sel);
List<Element> result = addElements(el);
if (result != null) {
return result;
} else {
throw new Exception("not found");
}
}
项目:SimpleUILauncher
文件:LauncherInstrumentationTestCase.java
/**
* Scrolls the {@param container} until it finds an object matching {@param condition}.
* @return the matching object.
*/
protected UiObject2 scrollAndFind(UiObject2 container, BySelector condition) {
do {
UiObject2 widget = container.findObject(condition);
if (widget != null) {
return widget;
}
} while (container.scroll(Direction.DOWN, 1f));
return container.findObject(condition);
}
项目:quickstart-android
文件:UiAutomatorTest.java
@Test
public void testLaunchDialog() {
// Floating action button
BySelector fabSelector = By.res(APP_PACKAGE, "invite_button");
// Click floating action button
Assert.assertTrue(mDevice.wait(Until.hasObject(fabSelector), UI_TIMEOUT));
mDevice.findObject(fabSelector).click();
// Radio button in the account picker dialog
BySelector firstAccountSelector = By.clazz(CLASS_CHECKED_TEXT_VIEW);
// Wait for account picker (may not appear)
if (mDevice.wait(Until.hasObject(firstAccountSelector), UI_TIMEOUT)) {
// Click first account
mDevice.findObjects(firstAccountSelector).get(0).click();
// Button with the text "OK" (enabled)
BySelector okButtonSelector = By.clazz(CLASS_BUTTON).text("OK").enabled(true);
// Click OK on account picker
Assert.assertTrue(mDevice.wait(Until.hasObject(okButtonSelector), UI_TIMEOUT));
mDevice.findObject(okButtonSelector).click();
}
// Check that we can see the title and message
String titleText = mContext.getString(R.string.invitation_title);
String messageText = mContext.getString(R.string.invitation_message);
BySelector titleTextSelector = By.text(titleText);
BySelector messageTextSelector = By.text(messageText);
assertTrue(mDevice.wait(Until.hasObject(titleTextSelector), UI_TIMEOUT));
assertTrue(mDevice.wait(Until.hasObject(messageTextSelector), UI_TIMEOUT));
// Back out of the dialog
mDevice.pressBack();
}
项目:android_packages_apps_tv
文件:LiveChannelsAppTest.java
public void testSettingsCancel() {
mMenuHelper.assertPressOptionsSettings();
BySelector byChannelSourcesSidePanel = mSidePanelHelper
.bySidePanelTitled(R.string.settings_channel_source_item_customize_channels);
assertWaitForCondition(mDevice, Until.hasObject(byChannelSourcesSidePanel));
mDevice.pressBack();
assertWaitForCondition(mDevice, Until.gone(byChannelSourcesSidePanel));
assertHas(mDevice, Constants.MENU, false);
}
项目:android_packages_apps_tv
文件:LiveChannelsAppTest.java
public void testClosedCaptionsCancel() {
mMenuHelper.assertPressOptionsClosedCaptions();
BySelector byClosedCaptionSidePanel = mSidePanelHelper
.bySidePanelTitled(R.string.side_panel_title_closed_caption);
assertWaitForCondition(mDevice, Until.hasObject(byClosedCaptionSidePanel));
mDevice.pressBack();
assertWaitForCondition(mDevice, Until.gone(byClosedCaptionSidePanel));
assertHas(mDevice, Constants.MENU, false);
}
项目:android_packages_apps_tv
文件:LiveChannelsAppTest.java
public void testDisplayModeCancel() {
ChannelStateData data = new ChannelStateData();
data.mTvTrackInfos.add(com.android.tv.testing.Constants.SVGA_VIDEO_TRACK);
data.mSelectedVideoTrackId = com.android.tv.testing.Constants.SVGA_VIDEO_TRACK
.getId();
updateThenTune(data, TvTestInputConstants.CH_2);
mMenuHelper.assertPressOptionsDisplayMode();
BySelector byDisplayModeSidePanel = mSidePanelHelper
.bySidePanelTitled(R.string.side_panel_title_display_mode);
assertWaitForCondition(mDevice, Until.hasObject(byDisplayModeSidePanel));
mDevice.pressBack();
assertWaitForCondition(mDevice, Until.gone(byDisplayModeSidePanel));
assertHas(mDevice, Constants.MENU, false);
}
项目:android_packages_apps_tv
文件:LiveChannelsAppTest.java
public void testMultiAudioCancel() {
ChannelStateData data = new ChannelStateData();
data.mTvTrackInfos.add(com.android.tv.testing.Constants.GENERIC_AUDIO_TRACK);
updateThenTune(data, TvTestInputConstants.CH_2);
mMenuHelper.assertPressOptionsMultiAudio();
BySelector byMultiAudioSidePanel = mSidePanelHelper
.bySidePanelTitled(R.string.side_panel_title_multi_audio);
assertWaitForCondition(mDevice, Until.hasObject(byMultiAudioSidePanel));
mDevice.pressBack();
assertWaitForCondition(mDevice, Until.gone(byMultiAudioSidePanel));
assertHas(mDevice, Constants.MENU, false);
}
项目:android_packages_apps_tv
文件:ParentalControlsTest.java
public void testRatingDependentSelect() {
// Show ratings fragment.
BySelector bySidePanel = mSidePanelHelper.bySidePanelTitled(
R.string.option_program_restrictions);
assertWaitForCondition(mDevice, Until.hasObject(bySidePanel));
mSidePanelHelper.assertNavigateToItem(R.string.option_ratings);
mDevice.pressDPadCenter();
// Block rating 6 and rating 12. Check if dependent select works well.
bySidePanel = mSidePanelHelper.bySidePanelTitled(R.string.option_ratings);
assertWaitForCondition(mDevice, Until.hasObject(bySidePanel));
// Test on blocking and unblocking Japanese rating.
int blockAge = 6;
int unBlockAge = 12;
int maxAge = 20;
int minAge = 4;
for (int age = minAge; age <= maxAge; age++) {
UiObject2 ratingCheckBox = mSidePanelHelper.assertNavigateToItem(String.valueOf(age))
.findObject(ByResource.id(mTargetResources, R.id.check_box));
if (ratingCheckBox.isChecked()) {
mDevice.pressDPadCenter();
}
}
mSidePanelHelper.assertNavigateToItem(String.valueOf(blockAge));
mDevice.pressDPadCenter();
assertRatingViewIsChecked(minAge, maxAge, blockAge, true);
mSidePanelHelper.assertNavigateToItem(String.valueOf(unBlockAge));
mDevice.pressDPadCenter();
assertRatingViewIsChecked(minAge, maxAge, unBlockAge, false);
mDevice.pressBack();
mDevice.pressBack();
getInstrumentation().waitForIdleSync();
}
项目:android_packages_apps_tv
文件:ParentalControlsTest.java
private void switchParentalControl(int oppositeStateResId) {
BySelector bySidePanel = mSidePanelHelper.byViewText(oppositeStateResId);
if (mDevice.hasObject(bySidePanel)) {
mSidePanelHelper.assertNavigateToItem(oppositeStateResId);
mDevice.pressDPadCenter();
getInstrumentation().waitForIdleSync();
}
}
项目:android_packages_apps_tv
文件:SidePanelHelper.java
public UiObject2 assertNavigateToItem(String title) {
BySelector sidePanelSelector = ByResource.id(mTargetResources, R.id.side_panel_list);
UiObject2 sidePanelList = mUiDevice.findObject(sidePanelSelector);
Assert.assertNotNull(sidePanelSelector + " not found", sidePanelList);
return UiDeviceAsserts
.assertNavigateTo(mUiDevice, sidePanelList, By.hasDescendant(By.text(title)),
Direction.DOWN);
}
项目:android_packages_apps_tv
文件:UiDeviceAsserts.java
/**
* Navigates through the focus items in a container returning the container child that has a
* descendant matching the {@code selector}.
* <p>
* The navigation starts in the {@code direction} specified and
* {@link Direction#reverse(Direction) reverses} once if needed. Fails if there is not a
* focused
* descendant, or if after completing both directions no focused child has a descendant
* matching
* {@code selector}.
* <p>
* Fails if the menu item can not be navigated to.
*
* @param uiDevice the device under test.
* @param container contains children to navigate over.
* @param selector the selector for the object to navigate to.
* @param direction the direction to start navigating.
* @return the object navigated to.
*/
public static UiObject2 assertNavigateTo(UiDevice uiDevice, UiObject2 container,
BySelector selector, Direction direction) {
int count = 0;
while (count < 2) {
BySelector hasFocusedDescendant = By.hasDescendant(FOCUSED_VIEW);
UiObject2 focusedChild = null;
SearchCondition<Boolean> untilHasFocusedDescendant = Until
.hasObject(hasFocusedDescendant);
boolean result = container.wait(untilHasFocusedDescendant,
UiObject2Asserts.getAdjustedTimeout(Constants.MAX_SHOW_DELAY_MILLIS));
if (!result) {
// HACK: Try direction anyways because play control does not always have a
// focused item.
UiDeviceUtils.pressDpad(uiDevice, direction);
UiObject2Asserts.assertWaitForCondition(container, untilHasFocusedDescendant);
}
for (UiObject2 c : container.getChildren()) {
if (c.isFocused() || c.hasObject(hasFocusedDescendant)) {
focusedChild = c;
break;
}
}
if (focusedChild == null) {
Assert.fail("No focused item found in container " + container);
}
if (focusedChild.hasObject(selector)) {
return focusedChild;
}
if (!UiObject2Utils.hasSiblingInDirection(focusedChild, direction)) {
direction = Direction.reverse(direction);
count++;
}
UiDeviceUtils.pressDpad(uiDevice, direction);
}
Assert.fail("Could not find item with " + selector);
return null;
}
项目:appium-uiautomator2-server
文件:ClassInstancePair.java
public BySelector getSelector() {
String androidClass = getAndroidClass();
//TODO: remove below comments once code get reviewed
//below commented line related to UiAutomator V1(bootstrap) version, as we don't have possibility
// in V2 version to use instance, so directly returning By.clazz
// new UiSelector().className(androidClass).instance(Integer.parseInt(instance));
return By.clazz(androidClass);
}
项目:appium-uiautomator2-server
文件:KnownElements.java
/**
*
* @param ui2BySelector, for finding {@link android.support.test.uiautomator.UiObject2} element derived using {@link By}
* @param by, user provided selector criteria from appium client.
* @return
*/
public static AndroidElement geElement(final BySelector ui2BySelector, By by) throws ElementNotFoundException, InvalidSelectorException, UiAutomator2Exception, ClassNotFoundException {
Object ui2Object = getInstance().findObject(ui2BySelector);
if (ui2Object == null) {
throw new ElementNotFoundException();
}
String id = UUID.randomUUID().toString();
AndroidElement androidElement = getAndroidElement(id, ui2Object, by);
cache.put(androidElement.getId(), androidElement);
return androidElement;
}
项目:appium-uiautomator2-server
文件:UiObjectElement.java
public Object getChild(final Object selector) throws UiObjectNotFoundException, InvalidSelectorException, ClassNotFoundException {
if (selector instanceof BySelector) {
/**
* We can't find the child element with BySelector on UiObject,
* as an alternative creating UiObject2 with UiObject's AccessibilityNodeInfo
* and finding the child element on UiObject2.
*/
AccessibilityNodeInfo nodeInfo = AccessibilityNodeInfoGetter.fromUiObject(element);
UiObject2 uiObject2 = (UiObject2) CustomUiDevice.getInstance().findObject(nodeInfo);
return uiObject2.findObject((BySelector) selector);
}
return element.getChild((UiSelector) selector);
}
项目:appium-uiautomator2-server
文件:UiObjectElement.java
public List<Object> getChildren(final Object selector, final By by) throws UiObjectNotFoundException, InvalidSelectorException, ClassNotFoundException {
if (selector instanceof BySelector) {
/**
* We can't find the child elements with BySelector on UiObject,
* as an alternative creating UiObject2 with UiObject's AccessibilityNodeInfo
* and finding the child elements on UiObject2.
*/
AccessibilityNodeInfo nodeInfo = AccessibilityNodeInfoGetter.fromUiObject(element);
UiObject2 uiObject2 = (UiObject2) CustomUiDevice.getInstance().findObject(nodeInfo);
return (List)uiObject2.findObjects((BySelector) selector);
}
return (List)this.getChildElements((UiSelector) selector);
}
项目:GCM-Sample
文件:UiAutomatorTest.java
/**
* Click sign-in button, select account at account selector, accept consent screen, and
* check that in the end the app is in the signed-in state.
*/
private void signInTest() {
// Sign-in button (enabled)
BySelector signInButtonSelector = By.clazz(CLASS_BUTTON).textContains("Sign in").enabled(true);
// Click Sign-in button (must be enabled)
assertTrue(mDevice.wait(Until.hasObject(signInButtonSelector), UI_TIMEOUT));
mDevice.findObject(signInButtonSelector).click();
// Radio button in the account picker dialog
BySelector firstAccountSelector = By.clazz(CLASS_CHECKED_TEXT_VIEW);
// Wait for account picker (may not appear)
if (mDevice.wait(Until.hasObject(firstAccountSelector), UI_TIMEOUT)) {
// Click first account
mDevice.findObjects(firstAccountSelector).get(0).click();
// Button with the text "OK" (enabled)
BySelector okButtonSelector = By.clazz(CLASS_BUTTON).text("OK").enabled(true);
// Click OK on account picker
assertTrue(mDevice.wait(Until.hasObject(okButtonSelector), UI_TIMEOUT));
mDevice.findObject(okButtonSelector).click();
}
// The Google Play Services consent screen accept button
BySelector acceptButtonSelector = By.res(GMS_PACKAGE, "accept_button");
// Accept consent screen and click OK button (this also may not appear)
if (mDevice.wait(Until.hasObject(acceptButtonSelector), UI_TIMEOUT)) {
mDevice.findObject(acceptButtonSelector).click();
}
// Check that the UI shows signed-in state
assertTrue(isSignedIn());
}
项目:GCM-Sample
文件:UiAutomatorTest.java
/**
* Click the disconnect button, check the app is in the signed-out state.
*/
private void disconnectTest() {
// Disconnect button (enabled)
String disconnectText = mContext.getString(R.string.disconnect);
BySelector disconnectSelector = By.clazz(CLASS_BUTTON).text(disconnectText).enabled(true);
// Click disconnect button
assertTrue(mDevice.wait(Until.hasObject(disconnectSelector), UI_TIMEOUT));
mDevice.findObject(disconnectSelector).click();
// Check that we get to signed-out state
String signedOutText = mContext.getString(R.string.signed_out);
BySelector signedOutTextSelector = By.text(signedOutText);
assertTrue(mDevice.wait(Until.hasObject(signedOutTextSelector), UI_TIMEOUT));
}
项目:GCM-Sample
文件:UiAutomatorTest.java
/**
* Checks the UI for text containing "Signed in" to determine if the user is signed in.
*/
private boolean isSignedIn() {
// Wait until we have an enabled button on screen
mDevice.wait(Until.hasObject(By.clazz(CLASS_BUTTON).enabled(true)), UI_TIMEOUT);
String signedInText = mContext.getString(R.string.signed_in_fmt, "");
BySelector signedInTextSelector = By.textContains(signedInText);
return mDevice.wait(Until.hasObject(signedInTextSelector), UI_TIMEOUT);
}
项目:GCM-Sample
文件:UiAutomatorTest.java
@Test
public void testLaunchDialog() {
// Floating action button
BySelector fabSelector = By.res(APP_PACKAGE, "invite_button");
// Click floating action button
Assert.assertTrue(mDevice.wait(Until.hasObject(fabSelector), UI_TIMEOUT));
mDevice.findObject(fabSelector).click();
// Radio button in the account picker dialog
BySelector firstAccountSelector = By.clazz(CLASS_CHECKED_TEXT_VIEW);
// Wait for account picker (may not appear)
if (mDevice.wait(Until.hasObject(firstAccountSelector), UI_TIMEOUT)) {
// Click first account
mDevice.findObjects(firstAccountSelector).get(0).click();
// Button with the text "OK" (enabled)
BySelector okButtonSelector = By.clazz(CLASS_BUTTON).text("OK").enabled(true);
// Click OK on account picker
Assert.assertTrue(mDevice.wait(Until.hasObject(okButtonSelector), UI_TIMEOUT));
mDevice.findObject(okButtonSelector).click();
}
// Check that we can see the title and message
String titleText = mContext.getString(R.string.invitation_title);
String messageText = mContext.getString(R.string.invitation_message);
BySelector titleTextSelector = By.text(titleText);
BySelector messageTextSelector = By.text(messageText);
assertTrue(mDevice.wait(Until.hasObject(titleTextSelector), UI_TIMEOUT));
assertTrue(mDevice.wait(Until.hasObject(messageTextSelector), UI_TIMEOUT));
// Back out of the dialog
mDevice.pressBack();
}
项目:google-services
文件:UiAutomatorTest.java
/**
* Click sign-in button, select account at account selector, accept consent screen, and
* check that in the end the app is in the signed-in state.
*/
private void signInTest() {
// Sign-in button (enabled)
BySelector signInButtonSelector = By.clazz(CLASS_BUTTON).textContains("Sign in").enabled(true);
// Click Sign-in button (must be enabled)
assertTrue(mDevice.wait(Until.hasObject(signInButtonSelector), UI_TIMEOUT));
mDevice.findObject(signInButtonSelector).click();
// Radio button in the account picker dialog
BySelector firstAccountSelector = By.clazz(CLASS_CHECKED_TEXT_VIEW);
// Wait for account picker (may not appear)
if (mDevice.wait(Until.hasObject(firstAccountSelector), UI_TIMEOUT)) {
// Click first account
mDevice.findObjects(firstAccountSelector).get(0).click();
// Button with the text "OK" (enabled)
BySelector okButtonSelector = By.clazz(CLASS_BUTTON).text("OK").enabled(true);
// Click OK on account picker
assertTrue(mDevice.wait(Until.hasObject(okButtonSelector), UI_TIMEOUT));
mDevice.findObject(okButtonSelector).click();
}
// The Google Play Services consent screen accept button
BySelector acceptButtonSelector = By.res(GMS_PACKAGE, "accept_button");
// Accept consent screen and click OK button (this also may not appear)
if (mDevice.wait(Until.hasObject(acceptButtonSelector), UI_TIMEOUT)) {
mDevice.findObject(acceptButtonSelector).click();
}
// Check that the UI shows signed-in state
assertTrue(isSignedIn());
}
项目:google-services
文件:UiAutomatorTest.java
/**
* Click the disconnect button, check the app is in the signed-out state.
*/
private void disconnectTest() {
// Disconnect button (enabled)
String disconnectText = mContext.getString(R.string.disconnect);
BySelector disconnectSelector = By.clazz(CLASS_BUTTON).text(disconnectText).enabled(true);
// Click disconnect button
assertTrue(mDevice.wait(Until.hasObject(disconnectSelector), UI_TIMEOUT));
mDevice.findObject(disconnectSelector).click();
// Check that we get to signed-out state
String signedOutText = mContext.getString(R.string.signed_out);
BySelector signedOutTextSelector = By.text(signedOutText);
assertTrue(mDevice.wait(Until.hasObject(signedOutTextSelector), UI_TIMEOUT));
}
项目:google-services
文件:UiAutomatorTest.java
/**
* Checks the UI for text containing "Signed in" to determine if the user is signed in.
*/
private boolean isSignedIn() {
// Wait until we have an enabled button on screen
mDevice.wait(Until.hasObject(By.clazz(CLASS_BUTTON).enabled(true)), UI_TIMEOUT);
String signedInText = mContext.getString(R.string.signed_in_fmt, "");
BySelector signedInTextSelector = By.textContains(signedInText);
return mDevice.wait(Until.hasObject(signedInTextSelector), UI_TIMEOUT);
}
项目:device-automator
文件:UiObjectMatcher.java
/**
* Find a view based on the prefixed text in the view. The matching is case-insensitive.
*
* @param text Prefix to search for.
* @param klass Expected class of the view.
* @return
*/
public static UiObjectMatcher withTextStartingWith(String text, Class klass) {
UiSelector uiSelector = new UiSelector()
.textStartsWith(text);
BySelector bySelector = By.textStartsWith(text);
if (klass != null) {
uiSelector = uiSelector.className(klass);
bySelector.clazz(klass);
}
return new UiObjectMatcher(uiSelector, bySelector);
}
项目:device-automator
文件:UiObjectMatcher.java
/**
* Find a view based on the text contained within the view. The matching is case-sensitive.
*
* @param text Text to search for inside a view.
* @param klass Expected class of the view.
* @return
*/
public static UiObjectMatcher withTextContaining(String text, Class klass) {
UiSelector uiSelector = new UiSelector()
.textContains(text);
BySelector bySelector = By.textContains(text);
if (klass != null) {
uiSelector = uiSelector.className(klass);
bySelector.clazz(klass);
}
return new UiObjectMatcher(uiSelector, bySelector);
}
项目:device-automator
文件:UiObjectMatcher.java
/**
* Find a view based on the exact text contained within the view. Matching is case-insensitive.
*
* @param text Exact text in the view.
* @param klass Expected class of the view.
* @return
*/
public static UiObjectMatcher withText(String text, Class klass) {
Pattern pattern = Pattern.compile("(?i)" + Pattern.quote(text));
UiSelector uiSelector = new UiSelector()
.textMatches(pattern.pattern());
BySelector bySelector = By.text(pattern);
if (klass != null) {
uiSelector = uiSelector.className(klass);
bySelector.clazz(klass);
}
return new UiObjectMatcher(uiSelector, bySelector);
}
项目:device-automator
文件:UiObjectMatcher.java
/**
* Find a view based on the resource id. Resource ids should be the fully qualified id,
* ex: com.android.browser:id/url
*
* @param id The fully qualified id of the view, ex: com.android.browser:id/url
* @param klass Expected class of the view.
* @return
*/
public static UiObjectMatcher withResourceId(String id, Class klass) {
UiSelector uiSelector = new UiSelector()
.resourceId(id);
BySelector bySelector = By.res(id);
if (klass != null) {
uiSelector = uiSelector.className(klass);
bySelector.clazz(klass);
}
return new UiObjectMatcher(uiSelector, bySelector);
}
项目:device-automator
文件:UiObjectMatcher.java
/**
* Find a view based on it's class.
*
* @param klass The class of the view to find.
* @return
*/
public static UiObjectMatcher withClass(Class klass) {
UiSelector uiSelector = new UiSelector()
.className(klass);
BySelector bySelector = By.clazz(klass);
return new UiObjectMatcher(uiSelector, bySelector);
}
项目:ChimpCheck
文件:SwipePerformer.java
public SwipePerformer(ChimpDriver chimpDriver, ViewManager viewManager,
WildCardManager wildCardManager, BySelector wildCardSelector, BySelector wildCardChildSelector,
Matcher<View> userDefinedMatcher) {
super("Swipe", chimpDriver, viewManager, wildCardManager, wildCardSelector, wildCardChildSelector,userDefinedMatcher);
}