protected void AddGenericPageObjectProperties(PageObjectDefinition pageObject, SeleniumGeneratorContext context, string type, string itemHelperName) { pageObject.Members.Add(GeneratePropertyForProxy(context.UniqueName, type, itemHelperName)); pageObject.ConstructorStatements.Add(GenerateInitializerForProxy(context, type, itemHelperName)); }
private void AddUITestNameProperty(PageObjectDefinition pageObject, SeleniumGeneratorContext context, string uniqueName) { // find end of the tag var token = context.Control.DothtmlNode.Tokens.First(t => t.Type == DothtmlTokenType.CloseTag || t.Type == DothtmlTokenType.Slash); pageObject.MarkupFileModifications.Add(new MarkupFileInsertText() { Text = " UITests.Name=\"" + uniqueName + "\"", Position = token.StartPosition }); }
protected virtual string DetermineName(PageObjectDefinition pageObject, SeleniumGeneratorContext context) { // if selector is set, just read it and don't add data context prefixes //var shouldAddDataContextPrefixes = uniqueName == null; var shouldAddDataContextPrefixes = true; // if not found, use the name properties to determine the name string uniqueName = null; foreach (var nameProperty in NameProperties) { uniqueName = SelectorStringHelper.TryGetNameFromProperty(context.Control, nameProperty); if (uniqueName != null) { uniqueName = SelectorStringHelper.NormalizeUniqueName(uniqueName); break; } } // if not found, try to use the content of the control to determine the name if (uniqueName == null && CanUseControlContentForName) { uniqueName = SelectorStringHelper.GetTextFromContent(context.Control.Content); } // check if control is userControl and assign control's name as unique name if (uniqueName == null && context.Control.DothtmlNode is DothtmlElementNode htmlNode) { uniqueName = htmlNode.TagName; // not add DataContext when generating page object for user control shouldAddDataContextPrefixes = false; } // if not found, use control name if (uniqueName == null) { uniqueName = typeof(TControl).Name; } if (shouldAddDataContextPrefixes) { uniqueName = SelectorStringHelper.AddDataContextPrefixesToName(pageObject.DataContextPrefixes, uniqueName); } return(uniqueName); }
/// <summary> /// Gets a list of declarations emitted by the control. /// </summary> public void AddDeclarations(PageObjectDefinition pageObject, SeleniumGeneratorContext context) { string propertyName; var htmlName = SelectorStringHelper.TryGetNameFromProperty(context.Control, UITests.NameProperty); if (htmlName == null) { // determine the name propertyName = DetermineName(pageObject, context); } else { propertyName = htmlName; } // normalize name var normalizedName = SelectorStringHelper.RemoveNonIdentifierCharacters(propertyName); // make the name unique var uniqueName = MakePropertyNameUnique(context.UsedNames, normalizedName); context.UsedNames.Add(uniqueName); context.UniqueName = uniqueName; // determine the selector if (htmlName == null) { context.Selector = uniqueName; AddUITestNameProperty(pageObject, context, uniqueName); } else { context.Selector = htmlName; } context.UsedNames.Add(propertyName); AddDeclarationsCore(pageObject, context); }
public virtual bool CanAddDeclarations(PageObjectDefinition pageObject, SeleniumGeneratorContext context) { return(true); }
protected abstract void AddDeclarationsCore(PageObjectDefinition pageObject, SeleniumGeneratorContext context);
protected void AddControlPageObjectProperty(PageObjectDefinition pageObject, SeleniumGeneratorContext context, string type) { pageObject.Members.Add(GeneratePropertyForProxy(context.UniqueName, type)); pageObject.ConstructorStatements.Add(GenerateInitializerForControl(context.UniqueName, context.Selector, type)); }