private static ElementStrategy CreateStrategyForKeyedElement(string guid, bool orderIsRelevant) { var result = ElementStrategy.CreateForKeyedElement(guid, orderIsRelevant); result.ContextDescriptorGenerator = ContextGen; return(result); }
private static ElementStrategy CreateStrategyForElementKeyedByGuidInList() { var result = ElementStrategy.CreateForKeyedElementInList(SharedConstants.GuidStr); result.ContextDescriptorGenerator = ContextGen; return(result); }
public static void CheckElementDisplayed(ElementStrategy findBy, string strElementIdentifier, string strElementDetails) { var attempts = 0; while (attempts < NumberOfAttemtps) { try { var objElement = Resources.Driver.GetElement(findBy, strElementIdentifier); objElement.WaitForElementVisible(); bool isPresent = objElement.IsDisplayed(); Resources.Report.Log(Resources.Test, Resources.Report.GetLogStatus(isPresent), String.Format(PageTitle + ": Verifying element '{0}' is displayed.", strElementDetails)); Assert.IsTrue(isPresent); break; } catch (StaleElementReferenceException) { } catch (Exception) { } attempts++; } }
private static ElementStrategy CreateSingletonElementStrategy() { var result = ElementStrategy.CreateSingletonElement(); result.ContextDescriptorGenerator = ContextGen; return(result); }
public SeleniumWebElement(IWebDriver wd, IWebElement element, ElementStrategy strategy, string identifier) { this.strategy = strategy; this.identifier = identifier; this.driver = wd; this.element = element; }
protected override void AddMergeStrategies(XmlMerger m) { m.MergeStrategies.ElementStrategies.Add("a", ElementStrategy.CreateForKeyedElementInList("key")); m.MergeStrategies.ElementStrategies.Add("b", ElementStrategy.CreateForKeyedElementInList("key")); m.MergeStrategies.ElementStrategies.Add("c", ElementStrategy.CreateForKeyedElementInList("key")); m.MergeStrategies.ElementStrategies.Add("d", ElementStrategy.CreateForKeyedElementInList("key")); }
public static void CheckElementText(ElementStrategy findBy, string strElementIdentifier, string strElementDetails, string strTextToCheck) { var attempts = 0; while (attempts < NumberOfAttemtps) { try { var objElement = Resources.Driver.GetElement(findBy, strElementIdentifier); objElement.WaitForElementVisible(); var strElementText = objElement.GetText(); objElement.WaitForTextChanged(strTextToCheck); bool isEqual = strElementText.Contains(strTextToCheck); Resources.Report.Log(Resources.Test, Resources.Report.GetLogStatus(isEqual), String.Format(PageTitle + ": Verifying text value of element '{0}' is displayed as '{1}'", strElementDetails, strTextToCheck)); Assert.IsTrue(isEqual); break; } catch (StaleElementReferenceException) { } catch (Exception) { } attempts++; } }
private static void SetupElementStrategies(XmlMerger merger) { merger.MergeStrategies.ElementToMergeStrategyKeyMapper = new BloomElementToStrategyKeyMapper(); merger.MergeStrategies.SetStrategy("html", ElementStrategy.CreateSingletonElement()); merger.MergeStrategies.SetStrategy("head", ElementStrategy.CreateSingletonElement()); merger.MergeStrategies.SetStrategy("body", ElementStrategy.CreateSingletonElement()); merger.MergeStrategies.SetStrategy("DataDiv", new ElementStrategy(true) { IsAtomic = false, OrderIsRelevant = false, MergePartnerFinder = new FindByKeyAttribute("id"), //yes, it's a singleton of sorts, but by the id, not the tag }); merger.MergeStrategies.SetStrategy("BookDataItem", new ElementStrategy(true) { IsAtomic = true, OrderIsRelevant = false, MergePartnerFinder = new FindByMultipleKeyAttributes(new List <string>(new string[] { "data-book", "lang" })) }); merger.MergeStrategies.SetStrategy("PageDiv", new ElementStrategy(true) { IsAtomic = true, //we're not trying to merge inside pages MergePartnerFinder = new FindByKeyAttribute("id"), }); }
public void SetTextWithJs(ElementStrategy parentControlFindByMethod, string parentControlFindByMethodInput, ElementStrategy findByMethod, string findByMethodInput, string textToSet) { IWebElement webElement = null; IJavaScriptExecutor javaScriptExecutor = this.driver as IJavaScriptExecutor; webElement = (parentControlFindByMethod != ElementStrategy.NA ? this.FindControl(parentControlFindByMethod, parentControlFindByMethodInput, findByMethod, findByMethodInput) : this.FindControl(findByMethod, findByMethodInput)); javaScriptExecutor.ExecuteScript("arguments[0].textContent = arguments[1];", new object[] { webElement, textToSet }); }
public void TestSetup() { _mergeStrategies = new MergeStrategies(); _mergeStrategies.ElementStrategies.Add("a", ElementStrategy.CreateSingletonElement()); _mergeStrategies.ElementStrategies.Add("b", ElementStrategy.CreateSingletonElement()); _mergeStrategies.ElementStrategies.Add("c", ElementStrategy.CreateSingletonElement()); _mergeStrategies.ElementStrategies.Add("d", ElementStrategy.CreateSingletonElement()); }
private void SetupElementStrategies() { _annotationMerger.MergeStrategies.SetStrategy("annotation", ElementStrategy.CreateForKeyedElement("guid", false)); var messageStrategy = ElementStrategy.CreateForKeyedElement("guid", false); messageStrategy.IsImmutable = true; _annotationMerger.MergeStrategies.SetStrategy("message", messageStrategy); }
public IReadOnlyCollection <IWebElement> FindControls(ElementStrategy parentControlFindByMethod, string parentControlFindByMethodInput, ElementStrategy findByMethod, string findByMethodInput) { IReadOnlyCollection <IWebElement> webElements = null; IWebElement webElement = this.FindControl(parentControlFindByMethod, parentControlFindByMethodInput); try { switch (findByMethod) { case ElementStrategy.XPATH: { webElements = webElement.FindElements(By.XPath(findByMethodInput)); break; } case ElementStrategy.ID: { webElements = webElement.FindElements(By.Id(findByMethodInput)); break; } case ElementStrategy.NAME: case ElementStrategy.LINK: case ElementStrategy.PLINK: { break; } case ElementStrategy.CLASS: { webElements = webElement.FindElements(By.ClassName(findByMethodInput)); break; } case ElementStrategy.TAG: { webElements = webElement.FindElements(By.TagName(findByMethodInput)); break; } case ElementStrategy.NA: { webElements = webElement.FindElements(By.Name(findByMethodInput)); break; } default: { goto case ElementStrategy.PLINK; } } } catch (NoSuchElementException noSuchElementException) { Console.WriteLine(noSuchElementException.Message); } return(webElements); }
private static void AddTranslationStrategy(MergeStrategies mergeStrategies) { var strategy = new ElementStrategy(false) { MergePartnerFinder = new OptionalKeyAttrFinder("type", new FormMatchingFinder()) }; mergeStrategies.SetStrategy("translation", strategy); }
/// <summary> /// Return the ElementStrategy instance for the given <param name="element"/>, or a default instance set up like this: /// ElementStrategy def = new ElementStrategy(true);//review: this says the default is to consider order relevant /// def.MergePartnerFinder = new FindByEqualityOfTree(); /// </summary> public ElementStrategy GetElementStrategy(XmlNode element) { var def = new ElementStrategy(true) { MergePartnerFinder = new FindByEqualityOfTree() }; return(def); }
public void CanSetToTrue() { var elementStrategy = new ElementStrategy(false) { IsAtomic = true }; Assert.IsTrue(elementStrategy.IsAtomic); }
public void Run_WeEditedTextElementInsideSingleton_ListenerGetsTextEditReport() { string ours = @"<a><b>new</b></a>"; string ancestor = @"<a><b>old</b></a>"; XmlMerger merger = new XmlMerger(new NullMergeSituation()); merger.MergeStrategies.SetStrategy("b", ElementStrategy.CreateSingletonElement()); TestCompare <XmlTextChangedReport>(merger, ours, ancestor, "//a"); }
internal static ElementStrategy AddKeyedElementType(MergeStrategies mergeStrategies, string name, string attribute, bool orderOfTheseIsRelevant) { var strategy = new ElementStrategy(orderOfTheseIsRelevant) { MergePartnerFinder = new FindByKeyAttribute(attribute) }; mergeStrategies.SetStrategy(name, strategy); return(strategy); }
private static ElementStrategy CreateSingletonElementType(bool orderOfTheseIsRelevant) { var strategy = new ElementStrategy(orderOfTheseIsRelevant) { MergePartnerFinder = SameNameFinder, ContextDescriptorGenerator = ContextGen }; return(strategy); }
public List <IElement> GetElements(ElementStrategy strategy, string identifier) { List <IElement> xpElements = new List <IElement>(); foreach (IWebElement webElement in this.driver.FindElements(Strategy.GetBy(strategy, identifier))) { xpElements.Add(new SeleniumWebElement(this.driver, webElement, strategy, identifier)); } return(xpElements); }
private static void AddExampleSentenceStrategy(MergeStrategies mergeStrategies) { var strategy = new ElementStrategy(false) { MergePartnerFinder = new OptionalKeyAttrFinder("source", new FormMatchingFinder()) }; strategy.AttributesToIgnoreForMerging.Add("dateModified"); mergeStrategies.SetStrategy("example", strategy); }
/* Called <pronunciation> in lift file. * private static void AddPhoneticStrategy(MergeStrategies mergeStrategies) * { * var strategy = new ElementStrategy(false) * { * MergePartnerFinder = new FormMatchingFinder() * }; * strategy.AttributesToIgnoreForMerging.Add("dateModified"); * mergeStrategies.SetStrategy("phonetic", strategy); * }*/ private static void AddPronunciationStrategy(MergeStrategies mergeStrategies) { var strategy = new ElementStrategy(false) { MergePartnerFinder = new FormMatchingFinder() }; strategy.AttributesToIgnoreForMerging.Add("dateModified"); mergeStrategies.SetStrategy("pronunciation", strategy); }
internal static ElementStrategy AddSingletonElementType(MergeStrategies mergeStrategies, string name) { var strategy = new ElementStrategy(false) { MergePartnerFinder = new FindFirstElementWithSameName() }; mergeStrategies.SetStrategy(name, strategy); return(strategy); }
/// <summary> /// Bootstrap a merger for the new-styled (nested) files. /// </summary> /// <remarks> /// 1. A generic 'header' element will be handled, although it may not appear in the file. /// 2. All classes will be included. /// 3. Merge strategies for class properties (regular or custom) will have keys of "classname+propname" to make them unique, system-wide. /// </remarks> private static void BootstrapSystem(MetadataCache metadataCache, XmlMerger merger) { merger.MergeStrategies.ElementToMergeStrategyKeyMapper = new FieldWorksElementToMergeStrategyKeyMapper(); var sharedElementStrategies = new Dictionary <string, ElementStrategy>(); CreateSharedElementStrategies(sharedElementStrategies); var strategiesForMerger = merger.MergeStrategies; ContextGen.MergeStrategies = strategiesForMerger; foreach (var sharedKvp in sharedElementStrategies) { strategiesForMerger.SetStrategy(sharedKvp.Key, sharedKvp.Value); } var customPropDefnStrat = new ElementStrategy(false) { MergePartnerFinder = new FindByMultipleKeyAttributes(new List <string> { SharedConstants.Name, SharedConstants.Class }), ContextDescriptorGenerator = new FieldWorksCustomPropertyContextGenerator(), IsAtomic = true, NumberOfChildren = NumberOfChildrenAllowed.Zero }; strategiesForMerger.SetStrategy(SharedConstants.CustomField, customPropDefnStrat); var headerStrategy = CreateSingletonElementType(false); headerStrategy.ContextDescriptorGenerator = ContextGen; strategiesForMerger.SetStrategy(SharedConstants.Header, headerStrategy); // There are two abstract class names used: CmAnnotation and DsChart. // Chorus knows how to find the matching element for these, as they use <CmAnnotation class='concreteClassname'. // So, add a keyed strategy for each of them. var keyedStrat = ElementStrategy.CreateForKeyedElement(SharedConstants.GuidStr, false); keyedStrat.AttributesToIgnoreForMerging.Add(SharedConstants.Class); keyedStrat.AttributesToIgnoreForMerging.Add(SharedConstants.GuidStr); strategiesForMerger.SetStrategy(SharedConstants.CmAnnotation, keyedStrat); keyedStrat = ElementStrategy.CreateForKeyedElement(SharedConstants.GuidStr, false); keyedStrat.AttributesToIgnoreForMerging.Add(SharedConstants.Class); keyedStrat.AttributesToIgnoreForMerging.Add(SharedConstants.GuidStr); strategiesForMerger.SetStrategy(SharedConstants.DsChart, keyedStrat); foreach (var classInfo in metadataCache.AllConcreteClasses) { MakeClassStrategy(strategiesForMerger, classInfo, ContextGen); AddPropertyStrategiesForClass(strategiesForMerger, classInfo); } }
internal static void AddElementStrategies(MergeStrategies mergeStrategies) { // Document root. mergeStrategies.SetStrategy("LayoutInventory", ElementStrategy.CreateSingletonElement()); #region 'layoutType' and children. mergeStrategies.SetStrategy("layoutType", ElementStrategy.CreateSingletonElement()); var elStrat = new ElementStrategy(false) { MergePartnerFinder = new FindByMultipleKeyAttributes(new List <string> { "class", "layout" }), NumberOfChildren = NumberOfChildrenAllowed.Zero, IsAtomic = true, ContextDescriptorGenerator = new FieldWorkCustomLayoutContextGenerator() }; mergeStrategies.SetStrategy("configure", elStrat); #endregion 'layoutType' and children. #region 'layout' and children. elStrat = new ElementStrategy(false) { MergePartnerFinder = new FindByMultipleKeyAttributes(new List <string> { "class", "type", "name" }), ContextDescriptorGenerator = new FieldWorkCustomLayoutContextGenerator() }; mergeStrategies.SetStrategy("layout", elStrat); elStrat = new ElementStrategy(true) { MergePartnerFinder = new FindByKeyAttributeInList("ref"), IsAtomic = true }; mergeStrategies.SetStrategy("part", elStrat); elStrat = new ElementStrategy(true) { //MergePartnerFinder = new FindByMultipleKeyAttributes(new List<string> { "class", "fieldType", "restrictions" }), MergePartnerFinder = new FindByKeyAttributeInList("combinedkey"), IsAtomic = true }; mergeStrategies.SetStrategy("generate", elStrat); elStrat = new ElementStrategy(true) { MergePartnerFinder = new FindByKeyAttributeInList("name"), IsAtomic = true, NumberOfChildren = NumberOfChildrenAllowed.Zero }; mergeStrategies.SetStrategy("sublayout", elStrat); #endregion 'layout' and children. }
private static void AddKeyedElementType(IDictionary <string, ElementStrategy> sharedElementStrategies, string elementName, IFindNodeToMerge findBykeyAttribute, bool orderOfTheseIsRelevant, bool isAtomic) { var strategy = new ElementStrategy(orderOfTheseIsRelevant) { MergePartnerFinder = findBykeyAttribute, ContextDescriptorGenerator = ContextGen, IsAtomic = isAtomic }; sharedElementStrategies.Add(elementName, strategy); }
/// <summary> /// Gets the collection of element merge strategies. /// </summary> public MergeStrategies GetStrategies() { var merger = new XmlMerger(new MergeSituation(null, null, null, null, null, MergeOrder.ConflictHandlingModeChoices.WeWin)); var def = new ElementStrategy(true) { MergePartnerFinder = new FindByEqualityOfTree() }; merger.MergeStrategies.SetStrategy("def", def); return(merger.MergeStrategies); }
public void Run_WeEditedTextElementInsideOneOfTWoKeyedElements_ListenerGetsTextEditReport() { // Gets report from MergeTextNodesMethod string ours = @"<a><b id='foo'>new</b> <b id='gaa'>same</b></a>"; string ancestor = @"<a><b id='foo'>old</b> <b id='gaa'>same</b></a>"; XmlMerger merger = new XmlMerger(new NullMergeSituation()); merger.MergeStrategies.SetStrategy("b", ElementStrategy.CreateForKeyedElement("id", false)); TestCompare <XmlTextChangedReport>(merger, ours, ancestor, "//a"); }
public static void EnterTextWithJs(ElementStrategy ElementStrategy, string identifier, string valueToEnter) { switch (ElementStrategy) { case ElementStrategy.ID: Resources.Driver.RunJavaScript("$('#" + identifier + "').val('" + valueToEnter + "')", Resources.Driver.GetCurrentWindowHandle()); break; case ElementStrategy.XPATH: Resources.Driver.RunJavaScript("$x('#" + identifier + "').val('" + valueToEnter + "')", Resources.Driver.GetCurrentWindowHandle()); break; } }
private static XmlMerger GetMerger(MergeSituation mergeSituation, out ListenerForUnitTests listener) { var elementStrategy = new ElementStrategy(false) { IsAtomic = true }; var merger = new XmlMerger(mergeSituation); merger.MergeStrategies.SetStrategy("topatomic", elementStrategy); listener = new ListenerForUnitTests(); merger.EventListener = listener; return(merger); }
private static XmlMerger GetMerger(out ListenerForUnitTests listener, bool isAtomic) { var elementStrategy = new ElementStrategy(false) { IsAtomic = isAtomic }; var merger = new XmlMerger(new NullMergeSituation()); merger.MergeStrategies.SetStrategy("topatomic", elementStrategy); listener = new ListenerForUnitTests(); merger.EventListener = listener; return(merger); }