public PomDeltaWizard(ApplicationPOMModel pom, Agent agent) { mPomDeltaUtils = new PomDeltaUtils(pom, agent); AddPage(Name: "Elements Update Settings", Title: "Elements Update Settings", SubTitle: "Elements Update Settings", Page: new PomDeltaSettingsWizardPage()); AddPage(Name: "Elements Compare", Title: "Elements Compare", SubTitle: "Elements Comparison with Latest Status", Page: new PomDeltaElementCompareWizardPage()); }
private ObservableList <DeltaElementInfo> GetUpdatedVirtulPOM(Common.InterfacesLib.IAgent currentAgent) { var waitToCompleteLearnProcess = false; while (this.GetCurrentPOM().IsLearning) { waitToCompleteLearnProcess = true; } this.GetCurrentPOM().IsLearning = true; if (waitToCompleteLearnProcess) { var pomLastUpdatedTimeSpan = (DateTime.Now - Convert.ToDateTime(GetCurrentPOMElementInfo().LastUpdatedTime)).Minutes; if (pomLastUpdatedTimeSpan < 5) { return(new ObservableList <DeltaElementInfo>()); } } GingerCore.Agent agent = (GingerCore.Agent)currentAgent; var pomDeltaUtils = new PomDeltaUtils(this.GetCurrentPOM(), agent); try { //set element type var elementList = this.GetCurrentPOM().MappedUIElements.Where(x => x.ElementTypeEnum != eElementType.Unknown).Select(y => y.ElementTypeEnum).Distinct().ToList(); pomDeltaUtils.PomLearnUtils.LearnOnlyMappedElements = true; pomDeltaUtils.SelectedElementTypesList = elementList; pomDeltaUtils.PomLearnUtils.ElementLocatorsSettingsList = GingerCore.Platforms.PlatformsInfo.PlatformInfoBase.GetPlatformImpl(agent.Platform).GetLearningLocators(); pomDeltaUtils.KeepOriginalLocatorsOrderAndActivation = true; pomDeltaUtils.PropertiesChangesToAvoid = DeltaControlProperty.ePropertiesChangesToAvoid.All; mAct.ExInfo += DateTime.Now.ToString() + " Self healing operation attempting to auto update application model"; this.GetCurrentPOM().StartDirtyTracking(); pomDeltaUtils.LearnDelta().Wait(); mAct.ExInfo += DateTime.Now + " Self healing operation application model was updated"; } catch (Exception ex) { } finally { this.GetCurrentPOM().IsLearning = false; } return(pomDeltaUtils.DeltaViewElements); }
public PomNewAddedElementSelectionPage(ObservableList <DeltaElementInfo> deltaElementInfos, PomDeltaUtils pomDeltaUtils, string searchText, UserControls.GridColView gridColView) { InitializeComponent(); mPomDeltaUtils = pomDeltaUtils; mDeltaElements = deltaElementInfos; mAgent = mPomDeltaUtils.Agent; mPomDeltaViewPage = new PomDeltaViewPage(mDeltaElements, gridColView); mPomDeltaViewPage.SetAgent(mAgent); mPomDeltaViewPage.xMainElementsGrid.Grid.Columns[1].Visibility = Visibility.Collapsed; mPomDeltaViewPage.xMainElementsGrid.btnMarkAll.Visibility = Visibility.Collapsed; mPomDeltaViewPage.xMainElementsGrid.txtSearch.Text = searchText; xNewPomElementsPageFrame.Content = mPomDeltaViewPage; // set LiveSpy Agent xLiveSpy.DriverAgent = mAgent; xLiveSpy.PropertyChanged += XLiveSpy_PropertyChanged; }
void SetPOMBasedChecks() { if (POMSelectionPending) { ShowPOMSelection(); } try { if (xIntegratePOMChkBox.IsChecked == true && SelectedPOM != null) { if (POMElement != null && POMCheckBoxToggled == true) { POMBasedAction = true; POMCheckBoxToggled = false; } else { //pomAllElementsPage = new PomAllElementsPage(xWindowSelection.SelectedPOM, PomAllElementsPage.eAllElementsPageContext.POMEditPage); ElementInfo matchingOriginalElement = (ElementInfo)WindowExplorerDriver.GetMatchingElement(SelectedElement, SelectedPOM.GetUnifiedElementsList()); if (matchingOriginalElement == null) { WindowExplorerDriver.LearnElementInfoDetails(SelectedElement); matchingOriginalElement = (ElementInfo)WindowExplorerDriver.GetMatchingElement(SelectedElement, SelectedPOM.GetUnifiedElementsList()); } if (matchingOriginalElement != null && (SelectedPOM.MappedUIElements.Contains(matchingOriginalElement) || SelectedPOM.UnMappedUIElements.Contains(matchingOriginalElement))) { PomDeltaUtils pomDeltaUtils = new PomDeltaUtils(SelectedPOM, Context.Agent); pomDeltaUtils.KeepOriginalLocatorsOrderAndActivation = true; /// Not Required but pomDeltaUtils.DeltaViewElements.Clear(); CustomElementLocatorsCheck(matchingOriginalElement, SelectedElement); /// To Do - POM Delta Run and if Updated Element is found then ask user if they would like to replace existing POM Element with New ? pomDeltaUtils.SetMatchingElementDeltaDetails(matchingOriginalElement, SelectedElement); int originalItemIndex = -1; if ((ApplicationPOMModel.eElementGroup)matchingOriginalElement.ElementGroup == ApplicationPOMModel.eElementGroup.Mapped) { originalItemIndex = SelectedPOM.MappedUIElements.IndexOf(matchingOriginalElement); } if (pomDeltaUtils.DeltaViewElements[0].DeltaStatus == eDeltaStatus.Changed) { //enter it to POM elements instead of existing one if (xAutoUpdatePOMElementChkBox.IsChecked == true || Reporter.ToUser(eUserMsgKey.UpdateExistingPOMElement, matchingOriginalElement.ElementName) == eUserMsgSelection.Yes) { /// Replace existing element with new one /// Element exists in Mapped Elements list if (originalItemIndex > -1) { SelectedPOM.MappedUIElements.RemoveAt(originalItemIndex); SelectedPOM.MappedUIElements.Insert(originalItemIndex, pomDeltaUtils.DeltaViewElements[0].ElementInfo); POMElementsUpdated = false; } /// Element exists in Un-Mapped Elements list /// We'll remove Element from Unmapped list and add it as new into Mapped Elements list else { SelectedPOM.MappedUIElements.Add(pomDeltaUtils.DeltaViewElements[0].ElementInfo); SelectedPOM.UnMappedUIElements.Remove(matchingOriginalElement); POMElementsUpdated = true; } POMElement = pomDeltaUtils.DeltaViewElements[0].ElementInfo; POMElement.ParentGuid = SelectedPOM.Guid; } else { if (originalItemIndex == -1) { SelectedPOM.MappedUIElements.Add(pomDeltaUtils.DeltaViewElements[0].ElementInfo); SelectedPOM.UnMappedUIElements.Remove(matchingOriginalElement); POMElement = pomDeltaUtils.DeltaViewElements[0].ElementInfo; POMElementsUpdated = true; } else { POMElement = matchingOriginalElement; POMElementsUpdated = false; } } } else { /// Element exist in UnMapped Elements List if (originalItemIndex == -1) { //if (Reporter.ToUser(eUserMsgKey.POMMoveElementFromUnmappedToMapped, matchingOriginalElement.ElementName, xWindowSelection.SelectedPOM.Name) == eUserMsgSelection.Yes) //{ SelectedPOM.MappedUIElements.Add(matchingOriginalElement); SelectedPOM.UnMappedUIElements.Remove(matchingOriginalElement); //} } POMElement = matchingOriginalElement; } POMBasedAction = true; } /// Element doesn't exist on POM, perform New Element related checks else { if (xAutoUpdatePOMElementChkBox.IsChecked == true || Reporter.ToUser(eUserMsgKey.POMElementNotExist, SelectedElement.ElementName, SelectedPOM.Name) == eUserMsgSelection.Yes) { POMBasedAction = true; SelectedElement.IsAutoLearned = true; SelectedPOM.MappedUIElements.Add(SelectedElement); POMElement = SelectedElement; POMElement.ParentGuid = SelectedPOM.Guid; POMElementsUpdated = true; } else { POMElement = null; POMBasedAction = false; POMElementsUpdated = false; } } } } else { if (POMCheckBoxToggled == true) { POMCheckBoxToggled = false; } POMBasedAction = false; } } catch (Exception ex) { Reporter.ToLog(eLogLevel.ERROR, "Exception in ShowCurrentControlInfo", ex); Reporter.ToUser(eUserMsgKey.ObjectLoad); } }