public static WebElementInfo CreateInfoFromModel(WebElementViewModel model) { WebElementInfo info = null; if (model is WebContextViewModel webContext) { info = new WebContext(); webContext.FillInfo(info); } else if (model is DropDownElementViewModel dropDown) { info = new DropDownElementInfo(); dropDown.FillInfo(info); } else if (model is RadioGroupViewModel radioGroup) { info = new RadioGroupElementInfo(); radioGroup.FillInfo(info); } else if (model is CombinedElementViewModel combined) { info = new CombinedWebElementInfo(); combined.FillInfo(info); } else { info = new WebElementInfo(); model.FillInfo(info); } return(info); }
public static WebElementInfo CreateInfoFromModel(WebElementInfoViewModel model, CombinedWebElementInfo parent = null) { WebElementInfo info = null; switch (model) { case WebElementWithReferenceViewModel wr: { var innerInfo = CreateInfoFromModel(wr.ReferencedWebElement); switch (wr.ElementType) { case WebElementTypes.Frame: var f = new FrameWebElementInfo(); f.TreePathToInnerElement = wr.ReferenceBreadString; innerInfo.Parent = f; f.InnerElement = innerInfo; info = f; break; case WebElementTypes.Reference: var r = new WebElementReference(); r.TreePathToReferencedElement = wr.ReferenceBreadString; innerInfo.Parent = r; r.ReferencedElement = innerInfo; info = r; break; default: throw new Exception($"Unexpected WebElementWithReferenceViewModel ElementType: {wr.ElementType}"); } } break; case CombinedWebElementInfoViewModel combinedModel: { CombinedWebElementInfo combined = null; switch (combinedModel.ElementType) { case WebElementTypes.Context: combined = new WebContextInfo(); break; case WebElementTypes.DropDown: combined = new DropDownElementInfo(); break; case WebElementTypes.RadioGroup: combined = new RadioGroupElementInfo(); break; case WebElementTypes.Directory: combined = new WebElementsDirectory(); break; case WebElementTypes.Control: combined = new CombinedWebElementInfo(); break; case WebElementTypes.Page: { var wpModel = model as WebPageInfoViewModel; var wpInfo = new WebPageInfo(); wpInfo.DefaultUrl = wpModel.DefaultUrl; wpInfo.UrlRegexString = wpModel.UrlRegexString; combined = wpInfo; } break; default: throw new Exception($"Unexpected combinedModel.ElementType: {combinedModel.ElementType}"); } info = combined; combined.Elements = combinedModel.Elements ?.Select(em => CreateInfoFromModel(em, combined)) .ToList(); } break; default: info = new WebElementInfo(); break; } info.Name = model.Name; info.Description = model.Description; info.InnerKey = model.InnerKey; info.Tags = model.Tags?.ToList(); info.Locator = model.Locator?.GetLocatorInfo(); info.IsKey = model.IsKey; info.Parent = parent; return(info); }