/// <summary> /// Checks the text of the specified ResourceId for the specified text value. /// </summary> /// <param name="resourceId">The resource identifier.</param> /// <param name="text">The text to search for.</param> /// <returns>true if the text is equal.</returns> public bool ExistTextOnResourceId(string resourceId, string text) { UiSelector uiSelector = new UiSelector().ResourceId(resourceId); bool exist = _controller.GetText(uiSelector).Equals(text); return(exist); }
/// <summary> /// Find <paramref name="toFind"/> while scrolling up <paramref name="list"/> /// </summary> /// <param name="list">list to scroll</param> /// <param name="toFind">UiSelector() of object to find</param> /// <param name="listScrollTimes">number of time to scroll the list. Default is 5</param> /// <param name="clickAfterFind">give true if want to click found object. Default is false</param> /// <returns>success and fail</returns> public bool FindOnListWithScroll(UiSelector list, string toFind, int listScrollTimes = 5, bool clickAfterFind = false) { // Wait until screen contains list for timeout sec. int previousTimeout = _linkUI.Controller.GetTimeout(); _linkUI.Controller.SetTimeout(5); if (!_linkUI.Controller.DoesScreenContains(list)) { throw new DeviceWorkflowException("Can not find list to scroll"); } _linkUI.Controller.Swipe(list, SESLib.To.Down, 2); _linkUI.Controller.SetTimeout(0); for (int i = 0; i < listScrollTimes; i++) { if (_linkUI.Controller.DoesScreenContains(toFind)) { _linkUI.Controller.SetTimeout(previousTimeout); if (clickAfterFind) { return(_linkUI.Controller.Click(toFind)); } return(true); } _linkUI.Controller.Swipe(list, SESLib.To.Up, 50); } _linkUI.Controller.SetTimeout(previousTimeout); return(false); }
/// <summary> /// Click <paramref name="toClick"/> while swiping <paramref name="list"/> /// </summary> /// <param name="list">list to swipe</param> /// <param name="toClick">string to click</param> /// <returns>success and fail</returns> public bool ClickOnListWithSwipe(UiSelector list, string toClick) { // Wait until screen contains list for timeout sec. if (!_linkUI.Controller.DoesScreenContains(list)) { throw new DeviceWorkflowException("Can not find list to swipe"); } int previousTimeout = _linkUI.Controller.GetTimeout(); _linkUI.Controller.SetTimeout(0); bool result; for (int i = 0; i < 5; i++) { if (_linkUI.Controller.DoesScreenContains(toClick)) { result = _linkUI.Controller.Click(toClick); _linkUI.Controller.SetTimeout(previousTimeout); return(result); } _linkUI.Controller.Swipe(list, SESLib.To.Left, 50); } _linkUI.Controller.SetTimeout(previousTimeout); return(false); }
/// <summary>Waits for availability of the given text on the device for the up to the given time</summary> /// <param name="textTitle">The text title.</param> /// <param name="tsWait">The ts wait.</param> /// <returns>true if found</returns> public bool WaitForAvailableText(string textTitle, TimeSpan tsWait) { int timeOut = _controller.GetTimeout(); _controller.SetTimeout(0); DateTime dtWait = DateTime.Now.AddSeconds(tsWait.TotalSeconds); UiSelector uiSelector = new UiSelector().TextContains(textTitle); bool available = _controller.DoesScreenContains(uiSelector); while (!available && dtWait > DateTime.Now) { Thread.Sleep(250); available = _controller.DoesScreenContains(uiSelector); double myTime = dtWait.Subtract(DateTime.Now).TotalSeconds; if (myTime % 5 == 0) { _controller.PressKey(KeyCode.KEYCODE_WAKEUP); } } _controller.SetTimeout(timeOut); return(available); }
/// <summary>Waits for the given resource identifier to not be displayed on the device</summary> /// <param name="resourceId">The resource identifier.</param> /// <param name="tsWait">The time to wait.</param> /// <returns>true on success</returns> public bool WaitForNotDisplayedResourceId(string resourceId, TimeSpan tsWait) { int timeOut = _controller.GetTimeout(); _controller.SetTimeout(0); DateTime dtWait = DateTime.Now.AddSeconds(tsWait.TotalSeconds); UiSelector uiSelector = new UiSelector().ResourceId(resourceId); bool displaid = _controller.DoesScreenContains(uiSelector); while (displaid && dtWait > DateTime.Now) { Thread.Sleep(250); displaid = _controller.DoesScreenContains(uiSelector); int myTime = (int)(dtWait.Subtract(DateTime.Now).TotalSeconds); if (myTime % 5 == 0) { _controller.PressKey(KeyCode.KEYCODE_WAKEUP); } } _controller.SetTimeout(timeOut); return(!displaid); }
/// <summary> /// Click <paramref name="toClick"/> while scrolling up <paramref name="list"/> /// </summary> /// <param name="list">list to scroll</param> /// <param name="toClick">UiSelector() of object to click</param> /// <param name="listScrollTimes">number of time to scroll the list. Default is 5</param> /// <returns>success and fail</returns> public bool ClickOnSequencialFileListWithScroll(UiSelector list, string toClick, int listScrollTimes = 5) { // Wait until screen contains list for timeout sec. if (!_linkUI.Controller.DoesScreenContains(list)) { throw new DeviceWorkflowException("Can not find list to scroll"); } int previousTimeout = _linkUI.Controller.GetTimeout(); _linkUI.Controller.SetTimeout(0); for (int i = 0; i < listScrollTimes; i++) { if (_linkUI.Controller.DoesScreenContains(toClick)) { _linkUI.Controller.SetTimeout(previousTimeout); return(_linkUI.Controller.Click(toClick)); } _linkUI.Controller.Swipe(list, SESLib.To.Up, 50); } _linkUI.Controller.SetTimeout(previousTimeout); return(false); }
public UiObject about() { if (about1 == null) { about1 = new UiSelector().text("ABOUT").makeUiObject(); } return(about1); }
public UiObject sortByTime() { if (sortByTime1 == null) { sortByTime1 = new UiSelector().resourceID(Android.app.speedtest.packageID() + ":id/logo").makeUiObject(); } return(sortByTime1); }
public UiObject results() { if (results1 == null) { results1 = new UiSelector().text("RESULTS").makeUiObject(); } return(results1); }
public UiObject sortByDownload() { if (sortByDownload1 == null) { sortByDownload1 = new UiSelector().resourceID(Android.app.speedtest.packageID() + ":id/downloadLayout").makeUiObject(); } return(sortByDownload1); }
public UiObject sortByPing() { if (sortByPing1 == null) { sortByPing1 = new UiSelector().resourceID(Android.app.speedtest.packageID() + ":id/pingLayout").makeUiObject(); } return(sortByPing1); }
public UiObject toolsButton() { if (toolsButton1 == null) { toolsButton1 = new UiSelector().resourceID(Android.app.speedtest.packageID() + ":id/toolsButton").makeUiObject(); } return(toolsButton1); }
public UiObject download() { if (download1 == null) { download1 = new UiSelector().resourceID(Android.app.speedtest.packageID() + ":id/download").makeUiObject(); } return(download1); }
public UiObject removeAdsButton() { if (removeAdsButton1 == null) { removeAdsButton1 = new UiSelector().text("Remove Ads").makeUiObject(); } return(removeAdsButton1); }
public UiObject testAgainButton() { if (testAgainButton1 == null) { testAgainButton1 = new UiSelector().text("Test Again").makeUiObject(); } return(testAgainButton1); }
public UiObject uploadSpeed() { if (uploadSpeed1 == null) { uploadSpeed1 = new UiSelector().resourceID(Android.app.speedtest.packageID() + ":id/uploadSpeed").makeUiObject(); } return(uploadSpeed1); }
public UiObject termsOfUse() { if (termsOfUse1 == null) { termsOfUse1 = new UiSelector().description("Terms of Use").makeUiObject(); } return(termsOfUse1); }
public UiObject logo() { if (logo1 == null) { logo1 = new UiSelector().description("Speedtest.net").makeUiObject(); } return(logo1); }
public UiObject logo() { if (logo1 == null) { logo1 = new UiSelector().resourceID(Android.app.speedtest.packageID() + ":id/logo").makeUiObject(); } return(logo1); }
public UiObject resultsLabel() { if (resultsLabel1 == null) { resultsLabel1 = new UiSelector().resourceID(Android.app.speedtest.packageID() + ":id/resultsCoutText").makeUiObject(); } return(resultsLabel1); }
public UiObject settings() { if (settings1 == null) { settings1 = new UiSelector().text("SETTINGS").makeUiObject(); } return(settings1); }
public void CancelNewItemSelector(UiSelector selector) { Foley.PlayProgrammingMoveBack(); if (selector == this.newItemSelector) { newItemSelectorShim.Deactivate(); } } // end of EditObjectUpdateObj CancelNewItemSelector()
/// <summary> /// Finds a collection of elements in the screen that matches the UiAutomator criteria using a Parent UiSelector. /// </summary> /// <param name="selector"> Represents the Enum in Share class </param> /// <param name="text"> the partial/complete text of an element to be found </param> /// <param name="position"> position of an object on the layout hierarchy </param> public static IReadOnlyCollection <AndroidElement> CollectionByUiAutomatorParentSelector(Selector selector, string text, int position = 0) { GlobalVar.AndroidDriver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(GlobalVar.TimeSpan); IReadOnlyCollection <AndroidElement> elements = null; var uiAutomator = new UiSelector().BuildParentSelector(selector, text, position); try { elements = GlobalVar.AndroidDriver.FindElementsByAndroidUIAutomator(uiAutomator); } catch (Exception ex) { Assert.Fail("GetControlsCollectionByUiAutomatorParentSelector threw an exception: " + ex.Message); } return(elements); }
// ************ DATE 10/16/2020 ************ // All the possible Selectors to search for a parent element till date. // ************ --------------- ************ #region USING PARENT SELECTORS /// <summary> /// Finds the first element in the screen that matches the UiAutomator criteria using a Parent UiSelector. /// </summary> /// <param name="selector"> Represents the Enum in Share class </param> /// <param name="value"> the boolean value of an element to be found </param> /// <param name="position"> position of an object on the layout hierarchy </param> public static AppiumWebElement ByUiAutomatorParentSelector(Selector selector, bool value, int position = 0) { GlobalVar.AndroidDriver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(GlobalVar.TimeSpan); AppiumWebElement element = null; var uiAutomator = new UiSelector().BuildParentSelector(selector, value, position); try { element = GlobalVar.AndroidDriver.FindElementByAndroidUIAutomator(uiAutomator); } catch (Exception ex) { Assert.Fail("GetControlByUiAutomatorParentSelector threw an exception: " + ex.Message); } return(element); }
/// <summary> /// Assumes we are on the "My HP Roam Queue" page. No perfomrance markers set here. /// </summary> private void SelectSingleJob() { UiSelector selector = new UiSelector(); //First, deselect all jobs if Select All is on by default. if (_androidHelper.ExistTextOnResourceId(JobSelectToggle, "Deselect All")) { if (!_controller.Click(selector.ResourceId(JobSelectToggle))) { throw new DeviceWorkflowException("Error deselecting all jobs in the queue."); } selector.Clear(); //Select the first job in the queue if (!_controller.Click(selector.ResourceId("com.hp.roam:id/ready_selected_iv"))) { throw new NoJobsFoundException($"No jobs found in My HP Roam Queue for {_executionData.Credential.UserName}."); } } }
private void EnterPassword() { UiSelector passwordSelector = new UiSelector().ResourceId("password"); string passwordtext = _controller.GetText(passwordSelector); if (string.IsNullOrEmpty(passwordtext)) { OnStatusUpdate("Enter password."); if (!_controller.SetText(passwordSelector, Credential.Password)) { throw new DeviceWorkflowException("Failed to enter password."); } } //Get rid of the keyboard if present if (_controller.IsVirtualKeyboardShown().Value) { _controller.PressKey(KeyCode.KEYCODE_ESCAPE); } }
private void EnterUserName() { UiSelector userNameSelector = new UiSelector().ResourceId("username"); string userNametext = _controller.GetText(userNameSelector); if (string.IsNullOrEmpty(userNametext)) { OnStatusUpdate("Enter user name."); if (!_controller.SetText(userNameSelector, Credential.UserName)) { throw new DeviceWorkflowException("Failed to enter user name."); } } UiSelector rememberSelector = new UiSelector().ResourceId("RememberMe"); if (!_controller.IsChecked(rememberSelector)) { OnStatusUpdate("Set 'Remember Me' checkbox."); _controller.Click(rememberSelector); } }
/// <summary>Waits for one of the given resource ids to be displayed on the screen.</summary> /// <param name="resourceIdFirst">The resource identifier one.</param> /// <param name="resourceIdSecond">The resource identifier two.</param> /// <param name="tsWait">The ts wait.</param> /// <returns>true if one of the two is displayed</returns> public bool WaitForAvailableResourceIds(string resourceIdFirst, string resourceIdSecond, TimeSpan tsWait) { int timeOut = _controller.GetTimeout(); DateTime dtWait = DateTime.Now.AddSeconds(tsWait.TotalSeconds); UiSelector uiSelector1 = new UiSelector().ResourceId(resourceIdFirst); UiSelector uiSelector2 = new UiSelector().ResourceId(resourceIdSecond); bool available = ExistResourceId(resourceIdFirst, resourceIdSecond); while (!available && dtWait > DateTime.Now) { Thread.Sleep(250); available = ExistResourceId(resourceIdFirst, resourceIdSecond); double myTime = dtWait.Subtract(DateTime.Now).TotalSeconds; if (myTime % 7 == 0) { _controller.PressKey(KeyCode.KEYCODE_WAKEUP); } } _controller.SetTimeout(timeOut); return(available); }
public void AddUISelector(List <GameObject> childList, out UiSelector uiSelector, bool ignorePaths) { // // Set up the pie menu for choosing new objects to add to the scene. // uiSelector = new PieSelector(null, "Sim.EditObjects.PickThing"); // Size used for all items. Vector2 size = new Vector2(1.0f, 1.0f); // Boku var boku = ActorManager.GetActor("BokuBot"); uiSelector.AddItem(new ActorMenuItem(uiSelector, boku.LocalizedName, boku.MenuTextureFile, boku, size, radialOffset)); // Rover var rover = ActorManager.GetActor("Rover"); uiSelector.AddItem(new ActorMenuItem(uiSelector, rover.LocalizedName, rover.MenuTextureFile, rover, size, radialOffset)); // Fruit var fruit = ActorManager.GetActor("Fruit"); uiSelector.AddItem(new ActorMenuItem(uiSelector, fruit.LocalizedName, fruit.MenuTextureFile, fruit, size, radialOffset)); #region BotGroup1 { RenderObject group = new ActorMenuItem(uiSelector, null, @"Textures\Tiles\group.botsI", null, size, radialOffset); UiSelector selectorGroup = new PieSelector(group, "Sim.EditObjects.PickToken"); // move it out front ITransform transformSelector = selectorGroup as ITransform; transformSelector.Local.Translation = new Vector3(0.0f, 0.0f, sizeMenuItem); transformSelector.Compose(); selectorGroup.ComposeDefault += NewItemSelectorComposeDefault; selectorGroup.Select += SelectNewItemSelector; selectorGroup.Cancel += CancelNewItemSelector; uiSelector.AddGroup(group, selectorGroup); // bot group items var actors = ActorManager.GetActorsInGroup("BotGroup1"); for (int i = 0; i < actors.Count; i++) { selectorGroup.AddItem(new ActorMenuItem(selectorGroup, actors[i].LocalizedName, actors[i].MenuTextureFile, actors[i], size, groupRadialOffset)); } } #endregion #region BotGroup2 // some might think a subroutine would be a better way to structure this... { RenderObject group = new ActorMenuItem(uiSelector, null, @"Textures\Tiles\group.botsII", null, size, radialOffset); UiSelector selectorGroup = new PieSelector(group, "Sim.EditObjects.PickToken"); // move it out front ITransform transformSelector = selectorGroup as ITransform; transformSelector.Local.Translation = new Vector3(0.0f, 0.0f, sizeMenuItem); transformSelector.Compose(); selectorGroup.ComposeDefault += NewItemSelectorComposeDefault; selectorGroup.Select += SelectNewItemSelector; selectorGroup.Cancel += CancelNewItemSelector; uiSelector.AddGroup(group, selectorGroup); // bot group items var actors = ActorManager.GetActorsInGroup("BotGroup2"); for (int i = 0; i < actors.Count; i++) { selectorGroup.AddItem(new ActorMenuItem(selectorGroup, actors[i].LocalizedName, actors[i].MenuTextureFile, actors[i], size, groupRadialOffset)); } } #endregion #region objects group (star, coin, heart) { RenderObject group = new ActorMenuItem(uiSelector, null, @"Textures\Tiles\group.objects", null, size, radialOffset); UiSelector selectorGroup = new PieSelector(group, "Sim.EditObjects.PickToken"); // move it out front ITransform transformSelector = selectorGroup as ITransform; transformSelector.Local.Translation = new Vector3(0.0f, 0.0f, sizeMenuItem); transformSelector.Compose(); selectorGroup.ComposeDefault += NewItemSelectorComposeDefault; selectorGroup.Select += SelectNewItemSelector; selectorGroup.Cancel += CancelNewItemSelector; uiSelector.AddGroup(group, selectorGroup); var actors = ActorManager.GetActorsInGroup("ObjectGroup"); for (int i = 0; i < actors.Count; i++) { selectorGroup.AddItem(new ActorMenuItem(selectorGroup, actors[i].LocalizedName, actors[i].MenuTextureFile, actors[i], size, groupRadialOffset)); } } #endregion #region trees group // trees group // { RenderObject group = new ActorMenuItem(uiSelector, null, @"filter.tree", null, size, radialOffset); UiSelector selectorGroup = new PieSelector(group, "Sim.EditObjects.PickTree"); // move it out front ITransform transformSelector = selectorGroup as ITransform; transformSelector.Local.Translation = new Vector3(0.0f, 0.0f, sizeMenuItem); transformSelector.Compose(); selectorGroup.ComposeDefault += NewItemSelectorComposeDefault; selectorGroup.Select += SelectNewItemSelector; selectorGroup.Cancel += CancelNewItemSelector; uiSelector.AddGroup(group, selectorGroup); // Trees group items var actors = ActorManager.GetActorsInGroup("TreeGroup"); for (int i = 0; i < actors.Count; i++) { selectorGroup.AddItem(new ActorMenuItem(selectorGroup, actors[i].LocalizedName, actors[i].MenuTextureFile, actors[i], size, groupRadialOffset)); } } #endregion #region pipe group { RenderObject group = new ActorMenuItem(uiSelector, null, @"filter.pipe", null, size, radialOffset); UiSelector selectorGroup = new PieSelector(group, "Sim.EditObjects.PickPipe"); // move it out front ITransform transformSelector = selectorGroup as ITransform; transformSelector.Local.Translation = new Vector3(0.0f, 0.0f, sizeMenuItem); transformSelector.Compose(); selectorGroup.ComposeDefault += NewItemSelectorComposeDefault; selectorGroup.Select += SelectNewItemSelector; selectorGroup.Cancel += CancelNewItemSelector; uiSelector.AddGroup(group, selectorGroup); // Trees group items var actors = ActorManager.GetActorsInGroup("PipeGroup"); for (int i = 0; i < actors.Count; i++) { selectorGroup.AddItem(new ActorMenuItem(selectorGroup, actors[i].LocalizedName, actors[i].MenuTextureFile, actors[i], size, groupRadialOffset)); } } #endregion #region underwater group // underwater group // { RenderObject group = new ActorMenuItem(uiSelector, null, @"filter.underwater", null, size, radialOffset); UiSelector selectorGroup = new PieSelector(group, "Sim.EditObjects.PickUnderwater"); // move it out front ITransform transformSelector = selectorGroup as ITransform; transformSelector.Local.Translation = new Vector3(0.0f, 0.0f, sizeMenuItem); transformSelector.Compose(); selectorGroup.ComposeDefault += NewItemSelectorComposeDefault; selectorGroup.Select += SelectNewItemSelector; selectorGroup.Cancel += CancelNewItemSelector; uiSelector.AddGroup(group, selectorGroup); // Trees group items var actors = ActorManager.GetActorsInGroup("UnderwaterGroup"); for (int i = 0; i < actors.Count; i++) { selectorGroup.AddItem(new ActorMenuItem(selectorGroup, actors[i].LocalizedName, actors[i].MenuTextureFile, actors[i], size, groupRadialOffset)); } } #endregion #region rock group // rock group // { var rock = ActorManager.GetActor("Rock"); RenderObject group = new ActorMenuItem(uiSelector, rock.LocalizedName, @"filter.rock", null, size, radialOffset); UiSelector selectorGroup = new PieSelector(group, "Sim.EditObjects.PickRock"); // move it out front ITransform transformSelector = selectorGroup as ITransform; transformSelector.Local.Translation = new Vector3(0.0f, 0.0f, sizeMenuItem); transformSelector.Compose(); selectorGroup.ComposeDefault += NewItemSelectorComposeDefault; selectorGroup.Select += SelectNewItemSelector; selectorGroup.Cancel += CancelNewItemSelector; uiSelector.AddGroup(group, selectorGroup); // Trees group items var actors = ActorManager.GetActorsInGroup("RockGroup"); for (int i = 0; i < actors.Count; i++) { selectorGroup.AddItem(new ActorMenuItem(selectorGroup, actors[i].LocalizedName, actors[i].MenuTextureFile, actors[i], size, groupRadialOffset)); } } #endregion // WayPoint #region waypoint group if (!ignorePaths) { RenderObject group = new ActorMenuItem(uiSelector, null, @"Textures\Tiles\modifier.waypointwhite", null, size, radialOffset); UiSelector selectorGroup = new PieSelector(group, "Sim.EditObjects.PickToken"); ITransform transformSelector = selectorGroup as ITransform; transformSelector.Local.Translation = new Vector3(0.0f, 0.0f, sizeMenuItem); transformSelector.Compose(); selectorGroup.ComposeDefault += NewItemSelectorComposeDefault; selectorGroup.Select += SelectNewItemSelector; selectorGroup.Cancel += CancelNewItemSelector; uiSelector.AddGroup(group, selectorGroup); selectorGroup.AddItem(new ActorMenuItem(selectorGroup, Strings.Localize("actorNames.pathGeneric"), @"filter.pathplain", null, size, radialOffset)); selectorGroup.AddItem(new ActorMenuItem(selectorGroup, Strings.Localize("actorNames.pathRoad"), @"filter.pathroad", null, size, radialOffset)); selectorGroup.AddItem(new ActorMenuItem(selectorGroup, Strings.Localize("actorNames.pathWall"), @"filter.pathwall", null, size, radialOffset)); selectorGroup.AddItem(new ActorMenuItem(selectorGroup, Strings.Localize("actorNames.pathVeggie"), @"filter.pathflora", null, size, radialOffset)); //uiSelector.AddItem(new ActorMenuItem(uiSelector, Strings.Localize("actorNames.wayPoint"), null, @"modifier.waypointwhite", null, size, radialOffset)); // move the selector into position { //ITransform transformSelector = uiSelector as ITransform; //transformSelector.Local.RotationY = MathHelper.ToRadians(14.0f); //transformSelector.Local.RotationX = MathHelper.ToRadians(14.0f); //transformSelector.Compose(); } // Add the selector to the child list. } #endregion waypoint group uiSelector.ComposeDefault += NewItemSelectorComposeDefault; uiSelector.Select += SelectNewItemSelector; uiSelector.Cancel += CancelNewItemSelector; childList.Add(uiSelector); } // end of AddUISelector()
/// <summary> /// Click <paramref name="toClick"/> while scrolling up <paramref name="list"/> /// </summary> /// <param name="list">list to scroll</param> /// <param name="toClick">UiSelector() of object to click</param> /// <param name="listScrollTimes">number of time to scroll the list. Default is 5</param> /// <returns>success and fail</returns> public bool ClickOnListWithScroll(UiSelector list, string toClick, int listScrollTimes = 5) { return(FindOnListWithScroll(list, toClick, listScrollTimes, true)); }