public ElementInfo AutoUpdateCurrentPOM(Common.InterfacesLib.IAgent currentAgent) { if (!IsSelfHealingConfiguredForAutoUpdateCurrentPOM()) { return(null); } var passedLocator = GetCurrentPOMElementInfo().Locators.Where(x => x.LocateStatus == ElementLocator.eLocateStatus.Passed); if (passedLocator == null || passedLocator.Count() == 0) { if (ExecutedFrom == eExecutedFrom.Run) { var runSetConfig = WorkSpace.Instance.RunsetExecutor.RunSetConfig; if (runSetConfig != null) { if ((Convert.ToDateTime(GetCurrentPOMElementInfo().LastUpdatedTime).ToUniversalTime() > runSetConfig.StartTimeStamp)) { return(null); } } } else { var pomLastUpdatedTimeSpan = (System.DateTime.Now - Convert.ToDateTime(GetCurrentPOMElementInfo().LastUpdatedTime)).TotalHours; if (pomLastUpdatedTimeSpan < 5) { return(null); } } } var deltaElementInfos = GetUpdatedVirtulPOM(currentAgent); if (deltaElementInfos.Count > 0) { UpdateElementSelfHealingDetails(deltaElementInfos.ToList()); } Guid currentPOMElementInfoGUID = new Guid(PomElementGUID[1]); var currentElementDelta = deltaElementInfos.Where(x => x.ElementInfo.Guid == currentPOMElementInfoGUID).FirstOrDefault(); if (currentElementDelta == null || currentElementDelta.DeltaStatus == eDeltaStatus.Deleted) { mAct.ExInfo += "Element not found during self healing process."; return(null); } else { return(currentElementDelta.ElementInfo); } }
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); }