From 699e90495b057e0760c7797eaad7006f205732cf Mon Sep 17 00:00:00 2001 From: Nijanthan Ledchumikanthan Date: Thu, 25 Feb 2016 16:35:04 +0530 Subject: [PATCH 1/7] Identifying UIItems issue fixed.. --- src/.nuget/packages.config | 5 ++ src/TestStack.White.sln | 23 +++++-- .../DescendantFinder.cs | 14 ++++ .../Mappings/ControlDictionary.cs | 5 ++ src/TestStack.White/TestStack.White.csproj | 7 +- src/TestStack.White/UIItems/UIItem.cs | 7 +- .../UIItems/UIItemCollection.cs | 5 +- src/TestStack.White/packages.config | 1 + src/UpgradeLog.htm | Bin 0 -> 60148 bytes src/WhiteProject/App.config | 6 ++ src/WhiteProject/Program.cs | 42 +++++++++++ src/WhiteProject/Properties/AssemblyInfo.cs | 36 ++++++++++ src/WhiteProject/WhiteProject.csproj | 65 ++++++++++++++++++ 13 files changed, 206 insertions(+), 10 deletions(-) create mode 100644 src/.nuget/packages.config create mode 100644 src/UpgradeLog.htm create mode 100644 src/WhiteProject/App.config create mode 100644 src/WhiteProject/Program.cs create mode 100644 src/WhiteProject/Properties/AssemblyInfo.cs create mode 100644 src/WhiteProject/WhiteProject.csproj diff --git a/src/.nuget/packages.config b/src/.nuget/packages.config new file mode 100644 index 00000000..a8e522d2 --- /dev/null +++ b/src/.nuget/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/TestStack.White.sln b/src/TestStack.White.sln index d79fdf24..dbc26aa3 100644 --- a/src/TestStack.White.sln +++ b/src/TestStack.White.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.40629.0 +# Visual Studio Express 2013 for Windows Desktop +VisualStudioVersion = 12.0.21005.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{1BCBA4C4-8C47-496C-B0D4-FDE9D066ED27}" ProjectSection(SolutionItems) = preProject @@ -57,6 +57,13 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinformsTodo", "Samples\Win EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Todo.Core", "Samples\Todo.Core\Todo.Core.csproj", "{F5604A48-3BD0-4418-83F1-3ECC03DD2FF0}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{81F4B351-6572-4CEA-9E39-B1978CB6DFA2}" + ProjectSection(SolutionItems) = preProject + .nuget\packages.config = .nuget\packages.config + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WhiteProject", "WhiteProject\WhiteProject.csproj", "{39964358-1A5B-4F78-9520-1B106F70CE72}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -131,6 +138,10 @@ Global {F5604A48-3BD0-4418-83F1-3ECC03DD2FF0}.Debug|Any CPU.Build.0 = Debug|Any CPU {F5604A48-3BD0-4418-83F1-3ECC03DD2FF0}.Release|Any CPU.ActiveCfg = Release|Any CPU {F5604A48-3BD0-4418-83F1-3ECC03DD2FF0}.Release|Any CPU.Build.0 = Release|Any CPU + {39964358-1A5B-4F78-9520-1B106F70CE72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {39964358-1A5B-4F78-9520-1B106F70CE72}.Debug|Any CPU.Build.0 = Debug|Any CPU + {39964358-1A5B-4F78-9520-1B106F70CE72}.Release|Any CPU.ActiveCfg = Release|Any CPU + {39964358-1A5B-4F78-9520-1B106F70CE72}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -138,13 +149,13 @@ Global GlobalSection(NestedProjects) = preSolution {24929CE3-4000-4600-8830-503BE6A2BA42} = {1AF6AEE7-C9D5-4B05-BEFE-AB61D83667D4} {492E6340-32CC-4D03-A9C4-36FB4C40CF5C} = {1AF6AEE7-C9D5-4B05-BEFE-AB61D83667D4} - {DFCF10D7-82C1-4916-A829-B520E8C65321} = {37EE7583-778A-481E-ADD4-52A357BE95F0} - {5620401C-0857-4F7C-869A-F3F56DF1697F} = {37EE7583-778A-481E-ADD4-52A357BE95F0} {EC32732F-6CB9-4078-B3A8-E3F038D5C2E1} = {1AF6AEE7-C9D5-4B05-BEFE-AB61D83667D4} {C186FEFC-D0B7-4FED-822D-688302B3B8A0} = {1AF6AEE7-C9D5-4B05-BEFE-AB61D83667D4} + {DFCF10D7-82C1-4916-A829-B520E8C65321} = {37EE7583-778A-481E-ADD4-52A357BE95F0} + {5620401C-0857-4F7C-869A-F3F56DF1697F} = {37EE7583-778A-481E-ADD4-52A357BE95F0} + {F5604A48-3BD0-4418-83F1-3ECC03DD2FF0} = {37EE7583-778A-481E-ADD4-52A357BE95F0} + {D0ED95E7-584A-45B9-B8E2-1A7ADD78C366} = {DFCF10D7-82C1-4916-A829-B520E8C65321} {3CC2654B-2108-4A38-AFFF-82718703EBE3} = {5620401C-0857-4F7C-869A-F3F56DF1697F} {51509F9D-12C4-4043-A68F-16A300F38FDB} = {5620401C-0857-4F7C-869A-F3F56DF1697F} - {D0ED95E7-584A-45B9-B8E2-1A7ADD78C366} = {DFCF10D7-82C1-4916-A829-B520E8C65321} - {F5604A48-3BD0-4418-83F1-3ECC03DD2FF0} = {37EE7583-778A-481E-ADD4-52A357BE95F0} EndGlobalSection EndGlobal diff --git a/src/TestStack.White/AutomationElementSearch/DescendantFinder.cs b/src/TestStack.White/AutomationElementSearch/DescendantFinder.cs index 23b9dbc6..7de48a40 100644 --- a/src/TestStack.White/AutomationElementSearch/DescendantFinder.cs +++ b/src/TestStack.White/AutomationElementSearch/DescendantFinder.cs @@ -1,13 +1,16 @@ +using Castle.Core.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Windows.Automation; +using TestStack.White.Configuration; namespace TestStack.White.AutomationElementSearch { public class DescendantFinder : IDescendantFinder { private readonly AutomationElement automationElement; + private readonly ILogger logger = CoreAppXmlConfiguration.Instance.LoggerFactory.Create(typeof(DescendantFinder)); public DescendantFinder(AutomationElement automationElement) { @@ -28,6 +31,17 @@ public virtual AutomationElement Descendant(Condition condition) public virtual List Descendants(AutomationSearchCondition automationSearchCondition) { var collection = automationElement.FindAll(TreeScope.Descendants, automationSearchCondition.Condition); + + //Automation elements identified in current window...(virtusa) + AutomationElement[] elementsArray = new AutomationElement[collection.Count]; + collection.CopyTo(elementsArray, 0); + + foreach (AutomationElement e in elementsArray) + { + logger.InfoFormat("Element Automation Id: ({0})..", e.Current.AutomationId); + } + //...(virtusa) + var enumerable = collection.Cast(); return new List(enumerable); } diff --git a/src/TestStack.White/Mappings/ControlDictionary.cs b/src/TestStack.White/Mappings/ControlDictionary.cs index 88e1d7a4..b96cc4bf 100644 --- a/src/TestStack.White/Mappings/ControlDictionary.cs +++ b/src/TestStack.White/Mappings/ControlDictionary.cs @@ -154,6 +154,11 @@ public virtual Type GetTestControlType(string className, string name, ControlTyp if (isPrimary.Length == 1) return isPrimary.Single().TestControlType; + //Get the first TestControldType when 'dictionaryItems' contains multiple elements...(virtusa) + var isFirstItem = dictionaryItems.First(); + return isFirstItem.TestControlType; + //...(virtusa) + throw new ControlDictionaryException(string.Format( "Multiple TestControls found for ControlType={0} and FrameworkId:{1} - {2}", controlType.LocalizedControlType, frameWorkId, diff --git a/src/TestStack.White/TestStack.White.csproj b/src/TestStack.White/TestStack.White.csproj index 65b07908..73dd3b70 100644 --- a/src/TestStack.White/TestStack.White.csproj +++ b/src/TestStack.White/TestStack.White.csproj @@ -62,8 +62,13 @@ 1591, 1570 - + ..\packages\Castle.Core.3.3.0\lib\net40-client\Castle.Core.dll + True + + + ..\packages\Castle.Windsor.3.3.0\lib\net40\Castle.Windsor.dll + True diff --git a/src/TestStack.White/UIItems/UIItem.cs b/src/TestStack.White/UIItems/UIItem.cs index e4a286d2..c6edbfe7 100644 --- a/src/TestStack.White/UIItems/UIItem.cs +++ b/src/TestStack.White/UIItems/UIItem.cs @@ -370,8 +370,11 @@ public virtual void SetValue(object value) /// public virtual void Enter(string value) { - var pattern = Pattern(ValuePattern.Pattern) as ValuePattern; - if (pattern != null) pattern.SetValue(string.Empty); + //...(virtusa) + //var pattern = Pattern(ValuePattern.Pattern) as ValuePattern; + //if (pattern != null) pattern.SetValue(string.Empty); + //...(virtusa) + if (string.IsNullOrEmpty(value)) return; actionListener.ActionPerformed(Action.WindowMessage); diff --git a/src/TestStack.White/UIItems/UIItemCollection.cs b/src/TestStack.White/UIItems/UIItemCollection.cs index 13ad463a..a6921360 100644 --- a/src/TestStack.White/UIItems/UIItemCollection.cs +++ b/src/TestStack.White/UIItems/UIItemCollection.cs @@ -49,8 +49,11 @@ public UIItemCollection(IEnumerable automationElements, IActionListener actionLi var uiItem = DictionaryMappedItemFactory.Create(automationElement, actionListener, customItemType); if (uiItem != null) Add(uiItem); } - catch (ControlDictionaryException) + catch (ControlDictionaryException e) { + //Printing the Bease exception message...(virtusa) + logger.Warn(e.GetBaseException().Message); + //...(virtusa) logger.WarnFormat("Couldn't create UIItem for AutomationElement, {0}", automationElement.Display()); } } diff --git a/src/TestStack.White/packages.config b/src/TestStack.White/packages.config index 72098ad9..fceddc39 100644 --- a/src/TestStack.White/packages.config +++ b/src/TestStack.White/packages.config @@ -1,4 +1,5 @@  + \ No newline at end of file diff --git a/src/UpgradeLog.htm b/src/UpgradeLog.htm new file mode 100644 index 0000000000000000000000000000000000000000..500333b5c31b6f6501f8a44d16131aaee94f57d1 GIT binary patch literal 60148 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 a$L{>1?DaZ0uVPQt{&Z4M9bE76>;C}g + + + + + \ No newline at end of file diff --git a/src/WhiteProject/Program.cs b/src/WhiteProject/Program.cs new file mode 100644 index 00000000..3b5b9dfd --- /dev/null +++ b/src/WhiteProject/Program.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Automation; +using TestStack.White.Factory; +using TestStack.White.UIItems; +using TestStack.White.UIItems.Finders; +using TestStack.White.UIItems.WindowItems; + +namespace WhiteProject +{ + class Program + { + static void Main(string[] args) + { + Console.WriteLine("Applications..."); + Window loginWindow = null; + + List windows = WindowFactory.Desktop.DesktopWindows(); + foreach (Window w in windows) + { + if(w.Title.Equals("Login")) + { + Console.WriteLine(w.Title); + loginWindow = w; + loginWindow.Focus(); + } + } + Console.Clear(); + + IUIItem[] uiItemList = loginWindow.GetMultiple(SearchCriteria.All); + Console.WriteLine(uiItemList.Length); + + var username = loginWindow.Get(SearchCriteria.ByAutomationId("JavaFX3")); + username.Enter("nija"); + + Console.ReadLine(); + } + } +} diff --git a/src/WhiteProject/Properties/AssemblyInfo.cs b/src/WhiteProject/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..b0a8475f --- /dev/null +++ b/src/WhiteProject/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("WhiteProject")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("WhiteProject")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("d913d1d2-26cd-4679-93c4-d131abbd8eaf")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/WhiteProject/WhiteProject.csproj b/src/WhiteProject/WhiteProject.csproj new file mode 100644 index 00000000..64f84d85 --- /dev/null +++ b/src/WhiteProject/WhiteProject.csproj @@ -0,0 +1,65 @@ + + + + + Debug + AnyCPU + {39964358-1A5B-4F78-9520-1B106F70CE72} + Exe + Properties + WhiteProject + WhiteProject + v4.5 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + {12c59ce2-9cf7-44f4-b27c-90754609f979} + TestStack.White + + + + + \ No newline at end of file From ac41e57633e695c461b75cd9166924194154d165 Mon Sep 17 00:00:00 2001 From: Nijanthan Ledchumikanthan Date: Tue, 1 Mar 2016 10:18:55 +0530 Subject: [PATCH 2/7] Xpath support implemented (ByXPath).. --- .gitignore | 5 +- .../DescendantFinder.cs | 17 ++-- .../Mappings/ControlDictionary.cs | 3 +- .../UIItems/Finders/SearchConditionFactory.cs | 43 ++++++++ .../UIItems/Finders/SearchCriteria.cs | 12 +++ src/TestStack.White/UIItems/UIItem.cs | 3 +- .../UIItems/UIItemCollection.cs | 3 +- .../UIItems/WindowItems/Window.cs | 97 +++++++++++++++++++ 8 files changed, 168 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index 098d4d74..1c390528 100644 --- a/.gitignore +++ b/.gitignore @@ -106,4 +106,7 @@ packages # our output folder for build artifacts build -Thumbs.db \ No newline at end of file +Thumbs.db + +# sample project +src/WhiteProject/* \ No newline at end of file diff --git a/src/TestStack.White/AutomationElementSearch/DescendantFinder.cs b/src/TestStack.White/AutomationElementSearch/DescendantFinder.cs index 7de48a40..160bda25 100644 --- a/src/TestStack.White/AutomationElementSearch/DescendantFinder.cs +++ b/src/TestStack.White/AutomationElementSearch/DescendantFinder.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Windows.Automation; using TestStack.White.Configuration; +using TestStack.White.UIItems.Finders; namespace TestStack.White.AutomationElementSearch { @@ -32,15 +33,15 @@ public virtual List Descendants(AutomationSearchCondition aut { var collection = automationElement.FindAll(TreeScope.Descendants, automationSearchCondition.Condition); - //Automation elements identified in current window...(virtusa) - AutomationElement[] elementsArray = new AutomationElement[collection.Count]; - collection.CopyTo(elementsArray, 0); + //Automation elements identified in current window... + //AutomationElement[] elementsArray = new AutomationElement[collection.Count]; - foreach (AutomationElement e in elementsArray) - { - logger.InfoFormat("Element Automation Id: ({0})..", e.Current.AutomationId); - } - //...(virtusa) + //collection.CopyTo(elementsArray, 0); + + //foreach (AutomationElement e in elementsArray) + //{ + // logger.InfoFormat("Element Automation Id: ({0})..", e.Current.AutomationId); + //} var enumerable = collection.Cast(); return new List(enumerable); diff --git a/src/TestStack.White/Mappings/ControlDictionary.cs b/src/TestStack.White/Mappings/ControlDictionary.cs index b96cc4bf..befd6dc7 100644 --- a/src/TestStack.White/Mappings/ControlDictionary.cs +++ b/src/TestStack.White/Mappings/ControlDictionary.cs @@ -154,10 +154,9 @@ public virtual Type GetTestControlType(string className, string name, ControlTyp if (isPrimary.Length == 1) return isPrimary.Single().TestControlType; - //Get the first TestControldType when 'dictionaryItems' contains multiple elements...(virtusa) + //Get the first TestControldType when 'dictionaryItems' contains multiple elements... var isFirstItem = dictionaryItems.First(); return isFirstItem.TestControlType; - //...(virtusa) throw new ControlDictionaryException(string.Format( "Multiple TestControls found for ControlType={0} and FrameworkId:{1} - {2}", diff --git a/src/TestStack.White/UIItems/Finders/SearchConditionFactory.cs b/src/TestStack.White/UIItems/Finders/SearchConditionFactory.cs index 5d55b6f8..d63daec1 100644 --- a/src/TestStack.White/UIItems/Finders/SearchConditionFactory.cs +++ b/src/TestStack.White/UIItems/Finders/SearchConditionFactory.cs @@ -1,8 +1,11 @@ using System; using System.Linq; using System.Windows.Automation; +using System.Xml; +using System.Xml.XPath; using TestStack.White.Mappings; using TestStack.White.UIItems.Custom; +using TestStack.White.UIItems.WindowItems; namespace TestStack.White.UIItems.Finders { @@ -41,6 +44,46 @@ public static SearchCondition CreateForAutomationId(string id) new AutomationElementProperty(id, "AutomationId", AutomationElement.AutomationIdProperty)); } + /// + /// Getting the objects (AutomationElement) hierarchy of the given window + /// Create SimpleSearchCondition with AutomationId for given xpath + /// + /// + /// + /// + public static SearchCondition CreateForXPath(string xpath, Window window) + { + XmlDocument xmlDoc = new XmlDocument(); + string hierarchy = window.GetHierarchy(window.AutomationElement); + + xmlDoc.LoadXml(hierarchy); + XmlNodeList nodeList = xmlDoc.SelectNodes(xpath); + if (nodeList.Count == 0) + { + throw new Exception("No element found for given XPath: " + xpath); + } + else if (nodeList.Count > 1) + { + throw new Exception("Multiple elements found for given XPath: " + xpath); + } + else + { + foreach (XmlNode node in nodeList) + { + var automationId = node.Attributes["AutomationId"].Value; + var className = node.Attributes["ClassName"].Value; + //var controlType = node.Attributes["ControlType"].Value; + var frameworkId = node.Attributes["FrameworkId"].Value; + var name = node.Attributes["Name"].Value; + + return new SimpleSearchCondition(automationElement => automationElement.Current.AutomationId, + new AutomationElementProperty(automationId, "AutomationId", AutomationElement.AutomationIdProperty)); + } + } + + throw new Exception("Invalid Xpath"); + } + public static SearchCondition CreateForName(string name) { return new SimpleSearchCondition(automationElement => automationElement.Current.Name, new AutomationElementProperty(name, "Name", AutomationElement.NameProperty)); diff --git a/src/TestStack.White/UIItems/Finders/SearchCriteria.cs b/src/TestStack.White/UIItems/Finders/SearchCriteria.cs index 6b01c92d..d722c071 100644 --- a/src/TestStack.White/UIItems/Finders/SearchCriteria.cs +++ b/src/TestStack.White/UIItems/Finders/SearchCriteria.cs @@ -6,6 +6,7 @@ using System.Windows.Automation; using TestStack.White.AutomationElementSearch; using TestStack.White.UIItems.Custom; +using TestStack.White.UIItems.WindowItems; using TestStack.White.UIItems.WindowStripControls; namespace TestStack.White.UIItems.Finders @@ -72,6 +73,17 @@ public static SearchCriteria ByAutomationId(string identification) return new SearchCriteria(SearchConditionFactory.CreateForAutomationId(identification)); } + /// + /// Create criteria for specified window with specified xpath + /// + /// + /// + /// + public static SearchCriteria ByXPath(string xpath, Window window) + { + return new SearchCriteria(SearchConditionFactory.CreateForXPath(xpath, window)); + } + public static SearchCriteria ByFramework(string framework) { return new SearchCriteria(SearchConditionFactory.CreateForFrameworkId(framework)); diff --git a/src/TestStack.White/UIItems/UIItem.cs b/src/TestStack.White/UIItems/UIItem.cs index c6edbfe7..4ed554f1 100644 --- a/src/TestStack.White/UIItems/UIItem.cs +++ b/src/TestStack.White/UIItems/UIItem.cs @@ -370,10 +370,9 @@ public virtual void SetValue(object value) /// public virtual void Enter(string value) { - //...(virtusa) + // //var pattern = Pattern(ValuePattern.Pattern) as ValuePattern; //if (pattern != null) pattern.SetValue(string.Empty); - //...(virtusa) if (string.IsNullOrEmpty(value)) return; diff --git a/src/TestStack.White/UIItems/UIItemCollection.cs b/src/TestStack.White/UIItems/UIItemCollection.cs index a6921360..0133afe1 100644 --- a/src/TestStack.White/UIItems/UIItemCollection.cs +++ b/src/TestStack.White/UIItems/UIItemCollection.cs @@ -51,9 +51,8 @@ public UIItemCollection(IEnumerable automationElements, IActionListener actionLi } catch (ControlDictionaryException e) { - //Printing the Bease exception message...(virtusa) + //Printing the Bease exception message... logger.Warn(e.GetBaseException().Message); - //...(virtusa) logger.WarnFormat("Couldn't create UIItem for AutomationElement, {0}", automationElement.Display()); } } diff --git a/src/TestStack.White/UIItems/WindowItems/Window.cs b/src/TestStack.White/UIItems/WindowItems/Window.cs index 229104f3..be2cddb5 100644 --- a/src/TestStack.White/UIItems/WindowItems/Window.cs +++ b/src/TestStack.White/UIItems/WindowItems/Window.cs @@ -1,12 +1,15 @@ +using Castle.Core.Logging; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; +using System.Reflection; using System.Runtime.InteropServices; using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Automation; +using System.Xml; using TestStack.White.AutomationElementSearch; using TestStack.White.Configuration; using TestStack.White.Factory; @@ -43,6 +46,10 @@ public abstract class Window : UIItemContainer, IDisposable public delegate bool WaitTillDelegate(); + public string Hierarchy { get; set; } + + private readonly ILogger logger = CoreAppXmlConfiguration.Instance.LoggerFactory.Create(typeof(Window)); + static Window() { WindowStates.Add(DisplayState.Maximized, WindowVisualState.Maximized); @@ -78,6 +85,96 @@ private void InitializeWindow() WindowSession.Register(this); } + /// + /// Getting AutomationElement proerties and child AutomationElements.. + /// Create XMLDocument of the AutomationElement hierarchy.. + /// + /// + /// + internal string GetHierarchy(AutomationElement element) + { + XmlDocument xmlDoc = new XmlDocument(); + XmlNode rootNode = xmlDoc.CreateElement(element.Current.LocalizedControlType.Replace(" ", "-")); + xmlDoc.AppendChild(rootNode); + addAttributes(element, xmlDoc, rootNode); + findChildElement(element, xmlDoc, rootNode); + + return xmlDoc.OuterXml; + } + + /// + /// Find the child element of given element recursively + /// + /// + /// + /// + private void findChildElement(AutomationElement element, XmlDocument xmlDoc, XmlNode node) + { + try + { + AutomationElementCollection childElementCollection = element.FindAll(TreeScope.Children, Condition.TrueCondition); + foreach (AutomationElement childElement in childElementCollection) + { + XmlNode childNode; + if (String.IsNullOrWhiteSpace(childElement.Current.LocalizedControlType)) + { + childNode = xmlDoc.CreateElement("Unknown"); + } + else + { + childNode = xmlDoc.CreateElement(childElement.Current.LocalizedControlType.Replace(" ", "-")); + } + node.AppendChild(childNode); + addAttributes(childElement, xmlDoc, childNode); + findChildElement(childElement, xmlDoc, childNode); + } + } + catch (InvalidOperationException e) + { + logger.Warn(e.Message); + } + catch (ArgumentException e) + { + logger.Warn(e.Message); + } + } + + /// + /// Getting the important attributes of AutomationElement.. + /// + /// + /// + /// + private void addAttributes(AutomationElement element, XmlDocument xmlDoc, XmlNode node) + { + try + { + XmlAttribute automationIdAttr = xmlDoc.CreateAttribute("AutomationId"); + automationIdAttr.Value = element.Current.AutomationId; + node.Attributes.Append(automationIdAttr); + + XmlAttribute classAttr = xmlDoc.CreateAttribute("ClassName"); + classAttr.Value = element.Current.ClassName; + node.Attributes.Append(classAttr); + + //XmlAttribute controlTypeAttr = xmlDoc.CreateAttribute("ControlType"); + //controlTypeAttr.Value = element.Current.ControlType; + //node.Attributes.Append(controlTypeAttr); + + XmlAttribute frameworkAttr = xmlDoc.CreateAttribute("FrameworkId"); + frameworkAttr.Value = element.Current.FrameworkId; + node.Attributes.Append(frameworkAttr); + + XmlAttribute nameAttr = xmlDoc.CreateAttribute("Name"); + nameAttr.Value = element.Current.Name; + node.Attributes.Append(nameAttr); + } + catch (Exception e) + { + logger.Warn(e.Message); + } + } + protected override IActionListener ChildrenActionListener { get { return this; } From 928561b1baa42bb725972f957c5dcbdbea73a6a2 Mon Sep 17 00:00:00 2001 From: Nijanthan Ledchumikanthan Date: Thu, 3 Mar 2016 12:54:41 +0530 Subject: [PATCH 3/7] Combobox select action bug fixed.. --- .../Interceptors/CoreInterceptor.cs | 3 +- .../UIItems/ListBoxItems/ComboBox.cs | 71 ++++++-- src/WhiteProject/Program.cs | 165 +++++++++++++++++- src/WhiteProject/WhiteProject.csproj | 3 + 4 files changed, 222 insertions(+), 20 deletions(-) diff --git a/src/TestStack.White/Interceptors/CoreInterceptor.cs b/src/TestStack.White/Interceptors/CoreInterceptor.cs index 91163edb..f56a8d24 100644 --- a/src/TestStack.White/Interceptors/CoreInterceptor.cs +++ b/src/TestStack.White/Interceptors/CoreInterceptor.cs @@ -25,8 +25,9 @@ public virtual void Intercept(IInvocation invocation) { CoreAppXmlConfiguration.Instance.Interceptors.Process(invocation, coreInterceptContext); } - catch (Exception) + catch (Exception e) { + logger.Error(e.Message); logger.Error(DynamicProxyInterceptors.ToString(invocation)); throw; } diff --git a/src/TestStack.White/UIItems/ListBoxItems/ComboBox.cs b/src/TestStack.White/UIItems/ListBoxItems/ComboBox.cs index a7d07f60..c26e36c2 100644 --- a/src/TestStack.White/UIItems/ListBoxItems/ComboBox.cs +++ b/src/TestStack.White/UIItems/ListBoxItems/ComboBox.cs @@ -1,3 +1,4 @@ +using System; using System.Windows.Automation; using TestStack.White.AutomationElementSearch; using TestStack.White.Recording; @@ -67,26 +68,72 @@ private AutomationElement EditableElement() public override void Select(string itemText) { - if (!Enabled) + //if (!Enabled) + //{ + // Logger.WarnFormat("Could not select {0}in {1} since it is disabled", itemText, Name); + // return; + //} + //if (Equals(itemText, SelectedItemText)) return; + //base.Select(itemText); + + AutomationElement comboboxList = this.AutomationElement.FindFirst(TreeScope.Children, + new PropertyCondition(AutomationElement.ControlTypeProperty, + ControlType.List)); + + AutomationElementCollection comboboxItem = comboboxList.FindAll(TreeScope.Children, + new PropertyCondition(AutomationElement.ControlTypeProperty, + ControlType.ListItem)); + + AutomationElement[] itemArray = new AutomationElement[comboboxItem.Count]; + comboboxItem.CopyTo(itemArray, 0); + + AutomationElement itemToSelect = null; + + for (int i = 0; i < itemArray.Length; i++) + { + if (itemArray[i].Current.Name.Equals(itemText)) + { + itemToSelect = itemArray[i]; + } + } + + if (itemToSelect != null) { - Logger.WarnFormat("Could not select {0}in {1} since it is disabled", itemText, Name); - return; + Object selectPattern = null; + if (itemToSelect.TryGetCurrentPattern(SelectionItemPattern.Pattern, out selectPattern)) + { + ((SelectionItemPattern)selectPattern).Select(); + } } - if (Equals(itemText, SelectedItemText)) return; - base.Select(itemText); } public override void Select(int index) { - if (!Enabled) + //if (!Enabled) + //{ + // Logger.Warn("Could not select " + index + "in " + Name + " since it is disabled"); + // return; + //} + //base.Select(index); + //var p = (ExpandCollapsePattern) this.AutomationElement.GetCurrentPattern(ExpandCollapsePattern.Pattern); + //if (p.Current.ExpandCollapseState.Equals(ExpandCollapseState.Expanded)) + // p.Collapse(); + + AutomationElement comboboxList = this.AutomationElement.FindFirst(TreeScope.Children, + new PropertyCondition(AutomationElement.ControlTypeProperty, + ControlType.List)); + + AutomationElementCollection comboboxItem = comboboxList.FindAll(TreeScope.Children, + new PropertyCondition(AutomationElement.ControlTypeProperty, + ControlType.ListItem)); + + AutomationElement itemToSelect = comboboxItem[index]; + + Object selectPattern = null; + if (itemToSelect.TryGetCurrentPattern(SelectionItemPattern.Pattern, out selectPattern)) { - Logger.Warn("Could not select " + index + "in " + Name + " since it is disabled"); - return; + ((SelectionItemPattern)selectPattern).Select(); } - base.Select(index); - var p = (ExpandCollapsePattern) this.AutomationElement.GetCurrentPattern(ExpandCollapsePattern.Pattern); - if (p.Current.ExpandCollapseState.Equals(ExpandCollapseState.Expanded)) - p.Collapse(); } public override void HookEvents(IUIItemEventListener eventListener) diff --git a/src/WhiteProject/Program.cs b/src/WhiteProject/Program.cs index 3b5b9dfd..4d37bee7 100644 --- a/src/WhiteProject/Program.cs +++ b/src/WhiteProject/Program.cs @@ -1,42 +1,193 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Automation; +using TestStack.White; +using TestStack.White.AutomationElementSearch; using TestStack.White.Factory; using TestStack.White.UIItems; using TestStack.White.UIItems.Finders; +using TestStack.White.UIItems.ListBoxItems; using TestStack.White.UIItems.WindowItems; namespace WhiteProject { class Program { + const string WINDOW_NAME = "Add New Machine"; + static void Main(string[] args) { Console.WriteLine("Applications..."); Window loginWindow = null; List windows = WindowFactory.Desktop.DesktopWindows(); + + //var fdaf = new ProcessStartInfo("gsdg"); + //Application application = Application.AttachOrLaunch(fdaf); + //Window mainWindow = application.GetWindows()[0]; + foreach (Window w in windows) { - if(w.Title.Equals("Login")) + if(w.Title.Equals(WINDOW_NAME)) { - Console.WriteLine(w.Title); + //Console.WriteLine(w.Title); + //Console.WriteLine(w.Hierarchy); loginWindow = w; loginWindow.Focus(); } } Console.Clear(); + + //IUIItem[] uiItemList = loginWindow.GetMultiple(SearchCriteria.All); + //Console.WriteLine(uiItemList.Length); + //AutomationElement ele = uiItemList[10].GetElement(SearchCriteria.All); + + //AutomationElementCollection collecton = ele.FindAll(TreeScope.Children, Condition.TrueCondition); + + //AutomationElement rootElement = AutomationElement.RootElement; + //var winCollection = rootElement.FindAll(TreeScope.Children, Condition.TrueCondition); + //Console.Clear(); + //foreach (AutomationElement element in winCollection) + //{ + // Console.WriteLine(element.Current.Name); + //} + + //Console.WriteLine(uiItemList.Length); + + + var comboBox = loginWindow.Get(SearchCriteria.ByXPath("//window[@Name='Add New Machine']/combo-box[1]", loginWindow)); + + //ComboBoxClick(loginWindow, comboBox.AutomationElement); + + //var combo = loginWindow.Get(SearchCriteria.ByXPath("//window[@Name='Add New Machine']/combo-box[1]", loginWindow)); + //var combo = loginWindow.Get(SearchCriteria.ByAutomationId("JavaFX34")); + //combo.Click(); + //var comboItem = loginWindow.Get(SearchCriteria.ByXPath("//window[@Name='Add New Machine']/combo-box[1]", loginWindow)); + //comboItem.Click(); + + //ComboBox comboBox = (ComboBox)combo; + + //foreach (ListItem item in comboBox.Items) + //{ + // Console.WriteLine(item.Text); + //} + comboBox.Select("Linux"); + + //AutomationElement selectElement = comboBox.AutomationElement; + + //Condition propertyCondition = new PropertyCondition(AutomationElement.NameProperty, "Windows", PropertyConditionFlags.None); + //AutomationElement firstMatch = comboBox.AutomationElement.FindFirst(TreeScope.Children, propertyCondition); + + //SelectListItem(selectElement, "JavaFX34"); - IUIItem[] uiItemList = loginWindow.GetMultiple(SearchCriteria.All); - Console.WriteLine(uiItemList.Length); + //var username1 = loginWindow.Get(SearchCriteria.ByXPath("sdgsdg")); + //var username = loginWindow.Get(SearchCriteria.Indexed()); + + //username.Enter("nija"); + + //SetCombobValueByUIA(comboBox.AutomationElement, "Mac"); - var username = loginWindow.Get(SearchCriteria.ByAutomationId("JavaFX3")); - username.Enter("nija"); Console.ReadLine(); - } + } + + public static void ComboBoxClick(Window w, AutomationElement ele) + { + if (w.AutomationElement != null) + { + AutomationElement comboboxInstance = ele; + + if (comboboxInstance == null) + { + Console.WriteLine("ComboBox instance not found."); + } + else + { + AutomationElement comboboxList = comboboxInstance.FindFirst(TreeScope.Children, + new PropertyCondition + (AutomationElement.ControlTypeProperty, ControlType.List)); + + AutomationElementCollection comboboxItem = + comboboxList.FindAll(TreeScope.Children, + new PropertyCondition(AutomationElement.ControlTypeProperty, + ControlType.ListItem)); + + AutomationElement[] itemArray = new AutomationElement[comboboxItem.Count]; + + comboboxItem.CopyTo(itemArray, 0); + + for (int i = 0; i < itemArray.Length; i++) + { + Console.WriteLine(itemArray[1]); + } + + AutomationElement itemToSelect = comboboxItem[1]; + + Object selectPattern = null; + if (itemToSelect.TryGetCurrentPattern(SelectionItemPattern.Pattern, out selectPattern)) + { + ((SelectionItemPattern)selectPattern).Select(); + } + } + } + } + + public static void SetCombobValueByUIA(AutomationElement ctrl, string newValue) + { + ExpandCollapsePattern exPat = ctrl.GetCurrentPattern(ExpandCollapsePattern.Pattern) + as ExpandCollapsePattern; + + if (exPat == null) + { + throw new ApplicationException("Bad Control type..."); + } + + exPat.Expand(); + + AutomationElement itemToSelect = ctrl.FindFirst(TreeScope.Children, new + PropertyCondition(AutomationElement.NameProperty, newValue)); + + SelectionItemPattern sPat = itemToSelect.GetCurrentPattern( + SelectionItemPattern.Pattern) as SelectionItemPattern; + sPat.Select(); + } + + public static void SelectListItem(AutomationElement selectionContainer, String itemText) + { + if ((selectionContainer == null) || (itemText == "")) + { + throw new ArgumentException( + "Argument cannot be null or empty."); + } + + Condition propertyCondition = new PropertyCondition( + AutomationElement.AutomationIdProperty, + itemText, + PropertyConditionFlags.IgnoreCase); + + AutomationElement firstMatch = + selectionContainer.FindFirst(TreeScope.Children, propertyCondition); + + if (firstMatch != null) + { + try + { + SelectionItemPattern selectionItemPattern; + selectionItemPattern = + firstMatch.GetCurrentPattern( + SelectionItemPattern.Pattern) as SelectionItemPattern; + selectionItemPattern.Select(); + } + catch (InvalidOperationException) + { + // Unable to select + return; + } + } + } } } diff --git a/src/WhiteProject/WhiteProject.csproj b/src/WhiteProject/WhiteProject.csproj index 64f84d85..30b20b87 100644 --- a/src/WhiteProject/WhiteProject.csproj +++ b/src/WhiteProject/WhiteProject.csproj @@ -40,10 +40,13 @@ + + + From 70756865eb7c0ac6957696ac45bf56ec7d35b87c Mon Sep 17 00:00:00 2001 From: admin Date: Wed, 2 Nov 2016 14:01:56 +0530 Subject: [PATCH 4/7] Updated search factory.. --- .../UIItems/Finders/SearchConditionFactory.cs | 22 ++++- .../UIItems/WindowItems/Window.cs | 12 +++ src/UpgradeLog.htm | Bin 60148 -> 52676 bytes src/UpgradeLog2.htm | Bin 0 -> 52676 bytes src/UpgradeLog3.htm | Bin 0 -> 62364 bytes src/WhiteProject/Program.cs | 81 ++++++++++++++++-- tools/UISpy.zip | Bin 0 -> 122866 bytes 7 files changed, 107 insertions(+), 8 deletions(-) create mode 100644 src/UpgradeLog2.htm create mode 100644 src/UpgradeLog3.htm create mode 100644 tools/UISpy.zip diff --git a/src/TestStack.White/UIItems/Finders/SearchConditionFactory.cs b/src/TestStack.White/UIItems/Finders/SearchConditionFactory.cs index d63daec1..60ccecf9 100644 --- a/src/TestStack.White/UIItems/Finders/SearchConditionFactory.cs +++ b/src/TestStack.White/UIItems/Finders/SearchConditionFactory.cs @@ -76,8 +76,28 @@ public static SearchCondition CreateForXPath(string xpath, Window window) var frameworkId = node.Attributes["FrameworkId"].Value; var name = node.Attributes["Name"].Value; - return new SimpleSearchCondition(automationElement => automationElement.Current.AutomationId, + if (!String.IsNullOrEmpty(automationId)) + { + return new SimpleSearchCondition(automationElement => automationElement.Current.AutomationId, new AutomationElementProperty(automationId, "AutomationId", AutomationElement.AutomationIdProperty)); + } + else if (!String.IsNullOrEmpty(name)) + { + return new SimpleSearchCondition(automationElement => automationElement.Current.Name, + new AutomationElementProperty(name, "Name", AutomationElement.NameProperty)); + } + else if (!String.IsNullOrEmpty(className)) + { + return new SimpleSearchCondition(automationElement => automationElement.Current.ClassName, + new AutomationElementProperty(className, "ClassName", AutomationElement.ClassNameProperty)); + } + else if (!String.IsNullOrEmpty(frameworkId)) + { + return new SimpleSearchCondition(automationElement => automationElement.Current.FrameworkId, + new AutomationElementProperty(frameworkId, "FrameworkId", AutomationElement.FrameworkIdProperty)); + } + + } } diff --git a/src/TestStack.White/UIItems/WindowItems/Window.cs b/src/TestStack.White/UIItems/WindowItems/Window.cs index be2cddb5..506b84aa 100644 --- a/src/TestStack.White/UIItems/WindowItems/Window.cs +++ b/src/TestStack.White/UIItems/WindowItems/Window.cs @@ -168,6 +168,18 @@ private void addAttributes(AutomationElement element, XmlDocument xmlDoc, XmlNod XmlAttribute nameAttr = xmlDoc.CreateAttribute("Name"); nameAttr.Value = element.Current.Name; node.Attributes.Append(nameAttr); + + object patternObj; + if (element.TryGetCurrentPattern(TextPattern.Pattern, out patternObj)) + { + XmlAttribute textAttr = xmlDoc.CreateAttribute("Text"); + var textPattern = (TextPattern) patternObj; + textAttr.Value = textPattern.DocumentRange.GetText(-1).TrimEnd('\r'); + Console.WriteLine("Text attribute added.."); + node.Attributes.Append(textAttr); + } + + } catch (Exception e) { diff --git a/src/UpgradeLog.htm b/src/UpgradeLog.htm index 500333b5c31b6f6501f8a44d16131aaee94f57d1..78b1e5f10bd885880d0b19bf3e04a297c6bff93e 100644 GIT binary patch literal 52676 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 literal 0 HcmV?d00001 diff --git a/src/WhiteProject/Program.cs b/src/WhiteProject/Program.cs index 4d37bee7..410379dd 100644 --- a/src/WhiteProject/Program.cs +++ b/src/WhiteProject/Program.cs @@ -3,11 +3,13 @@ using System.Diagnostics; using System.Linq; using System.Text; +using System.Threading; using System.Threading.Tasks; using System.Windows.Automation; using TestStack.White; using TestStack.White.AutomationElementSearch; using TestStack.White.Factory; +using TestStack.White.InputDevices; using TestStack.White.UIItems; using TestStack.White.UIItems.Finders; using TestStack.White.UIItems.ListBoxItems; @@ -17,22 +19,24 @@ namespace WhiteProject { class Program { - const string WINDOW_NAME = "Add New Machine"; + const string WINDOW_NAME = "Start menu"; static void Main(string[] args) { Console.WriteLine("Applications..."); Window loginWindow = null; - + Window startMenu = null; + Window startEditWindow = null; + Thread.Sleep(5000); List windows = WindowFactory.Desktop.DesktopWindows(); //var fdaf = new ProcessStartInfo("gsdg"); //Application application = Application.AttachOrLaunch(fdaf); //Window mainWindow = application.GetWindows()[0]; - + //Thread.Sleep(5000); foreach (Window w in windows) { - if(w.Title.Equals(WINDOW_NAME)) + if (w.AutomationElement.Current.Name.Equals(WINDOW_NAME)) { //Console.WriteLine(w.Title); //Console.WriteLine(w.Hierarchy); @@ -40,7 +44,60 @@ static void Main(string[] args) loginWindow.Focus(); } } - Console.Clear(); + + //IUIItem start = loginWindow.Get(SearchCriteria.ByXPath("//button[@Name='Start']", loginWindow)); + //start.Click(); + + //List windows1 = WindowFactory.Desktop.DesktopWindows(); + + //foreach (Window w in windows1) + //{ + // if (w.AutomationElement.Current.ClassName.Equals("IEFrame")) + // { + // //Console.WriteLine(w.Title); + // //Console.WriteLine(w.Hierarchy); + // startMenu = w; + // startMenu.Focus(); + // } + //} + + // + + //IUIItem searchPath = loginWindow.Get(SearchCriteria.ByXPath("//button[@Name='Previous Locations']", loginWindow)); + //searchPath.Click(); + //IUIItem searchText = loginWindow.Get(SearchCriteria.ByXPath("//edit[@Name='Address']", loginWindow)); + //searchPath.Enter("dfasdgs"); + + IUIItem startEdit1 = loginWindow.Get(SearchCriteria.ByXPath("//pane[@Name='Start menu']/pane[5]/pane[1]/pane[1]", loginWindow)); + startEdit1.Click(); + IUIItem startEdit = loginWindow.Get(SearchCriteria.ByXPath("//edit[@Name='Search Box']", loginWindow)); + //startEdit.Click(); + startEdit.Enter("notepad"); + startEdit.DrawHighlight(); + startEdit.Click(); + + IUIItem startEdit2 = loginWindow.Get(SearchCriteria.ByXPath("//window[@AutomationId='MangoDashBoard']/menu[4]/menu-item[@Name='Actions']/menu-item[@Name='Copy']", loginWindow)); + startEdit2.Click(); + + //startEdit.SetValue("virtusarpa"); + + + + + + + startEdit.DrawHighlight(); + // startEdit.Click(); + //Thread.Sleep(3000); + //startEdit.SetValue("remote1"); + // startEdit.Click(); + + //Thread.Sleep(2000); + + //IUIItem remote = startEditWindow.Get(SearchCriteria.ByXPath("//list-item[@Name='Remote Desktop Connection']", startEditWindow)); + //remote.Click(); + + //Console.Clear(); //IUIItem[] uiItemList = loginWindow.GetMultiple(SearchCriteria.All); //Console.WriteLine(uiItemList.Length); @@ -59,7 +116,7 @@ static void Main(string[] args) //Console.WriteLine(uiItemList.Length); - var comboBox = loginWindow.Get(SearchCriteria.ByXPath("//window[@Name='Add New Machine']/combo-box[1]", loginWindow)); + //var comboBox = loginWindow.Get(SearchCriteria.ByXPath("//window[@Name='Add New Machine']/combo-box[1]", loginWindow)); //ComboBoxClick(loginWindow, comboBox.AutomationElement); @@ -75,7 +132,7 @@ static void Main(string[] args) //{ // Console.WriteLine(item.Text); //} - comboBox.Select("Linux"); + //comboBox.Select("Linux"); //AutomationElement selectElement = comboBox.AutomationElement; @@ -91,6 +148,16 @@ static void Main(string[] args) //SetCombobValueByUIA(comboBox.AutomationElement, "Mac"); + //var testMachineGroup = loginWindow.Get(SearchCriteria.ByXPath("//title-pane[@Name='Test Machine Group']/text[1]", loginWindow)); + //testMachineGroup.Click(); + + //var draggedElement = loginWindow.Get(SearchCriteria.ByXPath("//window[@Name='Tempo Workstation 1.0.2.1']/list[1]/list-item[1]", loginWindow)); + //draggedElement.Click(); + + //var dropElement = loginWindow.Get(SearchCriteria.ByXPath("//title-pane[@Name='Test Machine Group']/list[1]", loginWindow)); + + //Mouse.Instance.DragAndDrop(draggedElement, dropElement); + Console.ReadLine(); } diff --git a/tools/UISpy.zip b/tools/UISpy.zip new file mode 100644 index 0000000000000000000000000000000000000000..1a388d4d4277a8c2d754aa7af054e47a371224dd GIT binary patch literal 122866 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 S-M>z8`C`{!XhA&Hh5SEsDlGK? literal 0 HcmV?d00001 From dedcc3cfb9aac7be4905617c70710b39d8aa0d6e Mon Sep 17 00:00:00 2001 From: Sajee Rankiripathirana Date: Thu, 10 Nov 2016 18:11:16 +0530 Subject: [PATCH 5/7] Changed Property Name as first SearchCriteria.. --- .../UIItems/Finders/SearchConditionFactory.cs | 12 +- src/UpgradeLog4.htm | Bin 0 -> 62364 bytes src/WhiteProject/Program.cs | 181 +++++------------- src/WhiteProject/WhiteProject.csproj | 2 - 4 files changed, 59 insertions(+), 136 deletions(-) create mode 100644 src/UpgradeLog4.htm diff --git a/src/TestStack.White/UIItems/Finders/SearchConditionFactory.cs b/src/TestStack.White/UIItems/Finders/SearchConditionFactory.cs index 60ccecf9..9c9393d5 100644 --- a/src/TestStack.White/UIItems/Finders/SearchConditionFactory.cs +++ b/src/TestStack.White/UIItems/Finders/SearchConditionFactory.cs @@ -76,16 +76,16 @@ public static SearchCondition CreateForXPath(string xpath, Window window) var frameworkId = node.Attributes["FrameworkId"].Value; var name = node.Attributes["Name"].Value; - if (!String.IsNullOrEmpty(automationId)) - { - return new SimpleSearchCondition(automationElement => automationElement.Current.AutomationId, - new AutomationElementProperty(automationId, "AutomationId", AutomationElement.AutomationIdProperty)); - } - else if (!String.IsNullOrEmpty(name)) + if (!String.IsNullOrEmpty(name)) { return new SimpleSearchCondition(automationElement => automationElement.Current.Name, new AutomationElementProperty(name, "Name", AutomationElement.NameProperty)); } + else if (!String.IsNullOrEmpty(automationId)) + { + return new SimpleSearchCondition(automationElement => automationElement.Current.AutomationId, + new AutomationElementProperty(automationId, "AutomationId", AutomationElement.AutomationIdProperty)); + } else if (!String.IsNullOrEmpty(className)) { return new SimpleSearchCondition(automationElement => automationElement.Current.ClassName, diff --git a/src/UpgradeLog4.htm b/src/UpgradeLog4.htm new file mode 100644 index 0000000000000000000000000000000000000000..5b10e0955f1f933d5d255139ec0c088364db10cd GIT binary patch literal 62364 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 literal 0 HcmV?d00001 diff --git a/src/WhiteProject/Program.cs b/src/WhiteProject/Program.cs index 410379dd..594bcc33 100644 --- a/src/WhiteProject/Program.cs +++ b/src/WhiteProject/Program.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; +using System.Runtime.InteropServices; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -19,147 +20,72 @@ namespace WhiteProject { class Program { - const string WINDOW_NAME = "Start menu"; + [DllImport("kernel32.dll", ExactSpelling = true)] - static void Main(string[] args) - { - Console.WriteLine("Applications..."); - Window loginWindow = null; - Window startMenu = null; - Window startEditWindow = null; - Thread.Sleep(5000); - List windows = WindowFactory.Desktop.DesktopWindows(); - - //var fdaf = new ProcessStartInfo("gsdg"); - //Application application = Application.AttachOrLaunch(fdaf); - //Window mainWindow = application.GetWindows()[0]; - //Thread.Sleep(5000); - foreach (Window w in windows) - { - if (w.AutomationElement.Current.Name.Equals(WINDOW_NAME)) - { - //Console.WriteLine(w.Title); - //Console.WriteLine(w.Hierarchy); - loginWindow = w; - loginWindow.Focus(); - } - } - - //IUIItem start = loginWindow.Get(SearchCriteria.ByXPath("//button[@Name='Start']", loginWindow)); - //start.Click(); - - //List windows1 = WindowFactory.Desktop.DesktopWindows(); - - //foreach (Window w in windows1) - //{ - // if (w.AutomationElement.Current.ClassName.Equals("IEFrame")) - // { - // //Console.WriteLine(w.Title); - // //Console.WriteLine(w.Hierarchy); - // startMenu = w; - // startMenu.Focus(); - // } - //} - - // - - //IUIItem searchPath = loginWindow.Get(SearchCriteria.ByXPath("//button[@Name='Previous Locations']", loginWindow)); - //searchPath.Click(); - //IUIItem searchText = loginWindow.Get(SearchCriteria.ByXPath("//edit[@Name='Address']", loginWindow)); - //searchPath.Enter("dfasdgs"); - - IUIItem startEdit1 = loginWindow.Get(SearchCriteria.ByXPath("//pane[@Name='Start menu']/pane[5]/pane[1]/pane[1]", loginWindow)); - startEdit1.Click(); - IUIItem startEdit = loginWindow.Get(SearchCriteria.ByXPath("//edit[@Name='Search Box']", loginWindow)); - //startEdit.Click(); - startEdit.Enter("notepad"); - startEdit.DrawHighlight(); - startEdit.Click(); - - IUIItem startEdit2 = loginWindow.Get(SearchCriteria.ByXPath("//window[@AutomationId='MangoDashBoard']/menu[4]/menu-item[@Name='Actions']/menu-item[@Name='Copy']", loginWindow)); - startEdit2.Click(); - - //startEdit.SetValue("virtusarpa"); - - - - - - - startEdit.DrawHighlight(); - // startEdit.Click(); - //Thread.Sleep(3000); - //startEdit.SetValue("remote1"); - // startEdit.Click(); - - //Thread.Sleep(2000); - - //IUIItem remote = startEditWindow.Get(SearchCriteria.ByXPath("//list-item[@Name='Remote Desktop Connection']", startEditWindow)); - //remote.Click(); + private static extern IntPtr GetConsoleWindow(); + private static IntPtr ThisConsole = GetConsoleWindow(); - //Console.Clear(); - - //IUIItem[] uiItemList = loginWindow.GetMultiple(SearchCriteria.All); - //Console.WriteLine(uiItemList.Length); - //AutomationElement ele = uiItemList[10].GetElement(SearchCriteria.All); - - //AutomationElementCollection collecton = ele.FindAll(TreeScope.Children, Condition.TrueCondition); + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] - //AutomationElement rootElement = AutomationElement.RootElement; - //var winCollection = rootElement.FindAll(TreeScope.Children, Condition.TrueCondition); - //Console.Clear(); - //foreach (AutomationElement element in winCollection) - //{ - // Console.WriteLine(element.Current.Name); - //} + private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); + private const int HIDE = 0; + private const int MAXIMIZE = 3; + private const int MINIMIZE = 6; + private const int RESTORE = 9; - //Console.WriteLine(uiItemList.Length); + const string WINDOW_PROPERTY = "Name"; + const string WINDOW_VALUE = "Untitled - Notepad"; + static void Main(string[] args) + { + //------------------------------ Maximizing Console Window ------------------------------ + Console.SetWindowSize(Console.LargestWindowWidth, Console.LargestWindowHeight); + ShowWindow(ThisConsole, MAXIMIZE); - //var comboBox = loginWindow.Get(SearchCriteria.ByXPath("//window[@Name='Add New Machine']/combo-box[1]", loginWindow)); - - //ComboBoxClick(loginWindow, comboBox.AutomationElement); - - //var combo = loginWindow.Get(SearchCriteria.ByXPath("//window[@Name='Add New Machine']/combo-box[1]", loginWindow)); - //var combo = loginWindow.Get(SearchCriteria.ByAutomationId("JavaFX34")); - //combo.Click(); - //var comboItem = loginWindow.Get(SearchCriteria.ByXPath("//window[@Name='Add New Machine']/combo-box[1]", loginWindow)); - //comboItem.Click(); - - //ComboBox comboBox = (ComboBox)combo; - - //foreach (ListItem item in comboBox.Items) - //{ - // Console.WriteLine(item.Text); - //} - //comboBox.Select("Linux"); - - //AutomationElement selectElement = comboBox.AutomationElement; - - //Condition propertyCondition = new PropertyCondition(AutomationElement.NameProperty, "Windows", PropertyConditionFlags.None); - //AutomationElement firstMatch = comboBox.AutomationElement.FindFirst(TreeScope.Children, propertyCondition); - - //SelectListItem(selectElement, "JavaFX34"); + //------------------------------ Type in Notepad the save.. ------------------------------ + //TypeAndSaveNotepad(); - //var username1 = loginWindow.Get(SearchCriteria.ByXPath("sdgsdg")); - //var username = loginWindow.Get(SearchCriteria.Indexed()); - - //username.Enter("nija"); + Console.ReadLine(); + } - //SetCombobValueByUIA(comboBox.AutomationElement, "Mac"); + public static Window SelectWindow(String property, String value) + { + List windows = WindowFactory.Desktop.DesktopWindows(); + Window selectedWindow = null; + foreach (Window window in windows) + { + System.Reflection.PropertyInfo propertyInfo = window.GetType().GetProperty(property); + String propertyValue = (String)(propertyInfo.GetValue(window, null)); - //var testMachineGroup = loginWindow.Get(SearchCriteria.ByXPath("//title-pane[@Name='Test Machine Group']/text[1]", loginWindow)); - //testMachineGroup.Click(); + if (propertyValue.Equals(value)) + { + selectedWindow = window; + } + } + return selectedWindow; + } - //var draggedElement = loginWindow.Get(SearchCriteria.ByXPath("//window[@Name='Tempo Workstation 1.0.2.1']/list[1]/list-item[1]", loginWindow)); - //draggedElement.Click(); + private static void TypeAndSaveNotepad() + { + //------------------------------ Selecting Window ------------------------------ + Console.WriteLine("------------------------------ Select Window for given Property and Value /------------------------------"); + Window selectedWindow = SelectWindow(WINDOW_PROPERTY, WINDOW_VALUE); + selectedWindow.Focus(); - //var dropElement = loginWindow.Get(SearchCriteria.ByXPath("//title-pane[@Name='Test Machine Group']/list[1]", loginWindow)); + //------------------------------ Type in Notepad ------------------------------ + String edit_Notepad = "//document[@ClassName='Edit']"; + String btn_File = "//menu-item[@Name='File']"; + String btn_New = "//menu-item[@Name='Save']"; + String combo_FileName = "//combo-box[@Name='File name:']"; - //Mouse.Instance.DragAndDrop(draggedElement, dropElement); + IUIItem edit_NotepadObj = selectedWindow.Get(SearchCriteria.ByXPath(edit_Notepad, selectedWindow)); + edit_NotepadObj.Enter("Testing Purpose............"); + IUIItem btn_FileObj = selectedWindow.Get(SearchCriteria.ByXPath(btn_File, selectedWindow)); + btn_FileObj.Click(); - Console.ReadLine(); + IUIItem btn_NewObj = selectedWindow.Get(SearchCriteria.ByXPath(btn_New, selectedWindow)); + btn_NewObj.Click(); } public static void ComboBoxClick(Window w, AutomationElement ele) @@ -167,7 +93,6 @@ public static void ComboBoxClick(Window w, AutomationElement ele) if (w.AutomationElement != null) { AutomationElement comboboxInstance = ele; - if (comboboxInstance == null) { Console.WriteLine("ComboBox instance not found."); diff --git a/src/WhiteProject/WhiteProject.csproj b/src/WhiteProject/WhiteProject.csproj index 30b20b87..22ec1848 100644 --- a/src/WhiteProject/WhiteProject.csproj +++ b/src/WhiteProject/WhiteProject.csproj @@ -45,8 +45,6 @@ - - From ddc97d733a752ffdf50038d5b56131730425c4eb Mon Sep 17 00:00:00 2001 From: Sajee Rankiripathirana Date: Fri, 6 Jan 2017 14:34:40 +0530 Subject: [PATCH 6/7] Updated xpath to support HelpText.. --- .../UIItems/WindowItems/Window.cs | 4 ++++ src/UpgradeLog5.htm | Bin 0 -> 62364 bytes 2 files changed, 4 insertions(+) create mode 100644 src/UpgradeLog5.htm diff --git a/src/TestStack.White/UIItems/WindowItems/Window.cs b/src/TestStack.White/UIItems/WindowItems/Window.cs index 506b84aa..a78c05e4 100644 --- a/src/TestStack.White/UIItems/WindowItems/Window.cs +++ b/src/TestStack.White/UIItems/WindowItems/Window.cs @@ -169,6 +169,10 @@ private void addAttributes(AutomationElement element, XmlDocument xmlDoc, XmlNod nameAttr.Value = element.Current.Name; node.Attributes.Append(nameAttr); + XmlAttribute helpTextAttr = xmlDoc.CreateAttribute("HelpText"); + helpTextAttr.Value = element.Current.HelpText; + node.Attributes.Append(helpTextAttr); + object patternObj; if (element.TryGetCurrentPattern(TextPattern.Pattern, out patternObj)) { diff --git a/src/UpgradeLog5.htm b/src/UpgradeLog5.htm new file mode 100644 index 0000000000000000000000000000000000000000..5b10e0955f1f933d5d255139ec0c088364db10cd GIT binary patch literal 62364 zcmeI5`%@c9lE?ekyNLTAH1_S-b1ZL+jb}X*JPpRiHehVLp4b4y%e-tP^YG5zpMH0r zZzV-{ms%~gkQi~JP)KTZS7l{oek(KUssH_-zePVpGtuj4I$Dj^qc_oPREqYZYIGDG zM!!V=5&e6l6#cwPQ6<`l&Z6z8%=J!m8l8};6n*3BFnSg}jD~m(M`O`Xq}$}_H|RW# z_M>CIw@G!(XO$eHX0%IC_obDh3s>qfRMV+^{n1NkA4j{S*x+;9rqvI8X9Yh5srN-KLa(@O?u47tnrOBWYJ9@4Naf^Xm&&r{o%AdMy0ETti*WqULaBW{H<9pGbl_yI_H|6TPvQ7} zG#8Cty~m=TTcWMDAWWQIQ5?n=*n6%;ijun|+K&b{Tw6UvO5*okw1TvEc`gmS1BLe@ zX=;^pd)!s~*6-&|C)>0-`@P2RQ|heNW_M(hWHI`A>)AeKwO0QxP%871z1nqL4z);0 z+@C^2lvLZIbpGY^R|HLl|9K>!I!F$~l$&k^vT5FSOUrS45WnJ8cVY`sv=!`8W)YrS zYXP-d8b-cfu%nW*eaCnFRcnZd@hgk?9qCD%Bh>Q?l4^}+Rtq+tm27*nl;Yp5mLnY- z7W$nxuEMi<#*(XnBz7N9HhlFS;kUf#A$2WNyJ8mDTd2^AjG&caER()ltI17Uljkhf z<~f>_zf$BOjUH3$Q)hDy3-Z{GmTGcO`m5TOdXEUreDfKcZ%5}Y5|HInEOtUYj)TOtv3CF*eh97j9bh zCGE0|oyK-EKCcQ^ERqv9ip&)`7HdnbwgL6#%=-$thrHDDv)+^Xwu+4o9HJG^3csJn$%%bp%g8drLA^B)^I5B&|3O_5P?>Y*D?Y)%o~ReYrSps?a*s z<4X1kipTTbhootnjt-&!1qoSf8Qv>~e_u{LTch~6^KB~Dmh~`hLud7R#k0|45U=-> zg1Gmx^kX#r=t-7f7Ym>^C1h*7sWlD7R2891>&dYbACt<~v_?NhK>Iyet+yBjSL#iS zUwx;47pp;W8=l5n`4+6JMdFIFw;U=$Y^b00rA5s(madO9?Yo$CJ*sOX2WhZ1T1l%W z<Jzd0mrY&^5vBzJMS@S!ja}=d{mT6i0uSww{7ukAOcybFD_U-WJx^+#FU#uL)kQ*~aeCoY}2u z+N)Z%jTL$BWJ%&NCqEKwb0uE0CEB=+Jjt?bK|%c_UB?zo$P{%ynykKlg_q5VSRC8N&T2U z!xVAUWS&B8_#2whc%q&iIJ)2P<#C@_v%eMvC;N8RLlPH7M|B1QzNJZ_s`DB=2g_yZ zx#wbe%@Pbne<|3;Th-YcWEjsgncwzvd9kPUZOP9`Zn)ltZ?~p(&A7DEcJ8~@XGqm& zv6lBwr=Nc#S97o0h&G<58M%rThZ&pjb2oNXbpD}LZTJ@C?VPuA)(ZRxhUV#24~@5* z%~NC*qevE1zl11hR4sDDMZs|z#YsCnnIKyI3*W_U-hC*fX91F2-gc|mz+Na)EoSLF zW=uZ)2^lJuf6O?#+F>z7-cWG&lw&aX>{0k6lThKpLj`+)^amwnqB zwHg)EXRETGbe6uv%)ePW)x4OwSs0~)dx-AD~7@Rvb2Ipb1r^P^r^$i?Z#S;R4IdV48;*d?3>I75|kZOU{epDsypV;V#`9ZDr(RwfW zUD1^!)go;UT;r$ee|XR9Qz@oO%6#8>YpvTWxx5-T(W*w-lM=HS;#@r0wXBD&9P{*S zp0n(1P|UH?sKy#;v2`~^?VHE7$@cHG5xqV@?~od=L0Mx@S`8(s%ChNO>n!!8pY?E7 z_Bd-Y)AnxRy2elI*wFjr)(S0Infu6~c7(m3XY%5boAhn#Kp$T5v%$Ui`5>)btEzr> zlq3)F^j9daaIMJ7#=j-m`>Y@R*^L+~+PWY82JKcQ*D1dDk^U5GGL}KbP_)Q8HLYcv zym~EBt9KxBme1X*dsEj>C!@FYStnU->(lRGw+D#}_pa|uqva_y^PcZlS9djwVL4u7 z<0mO|jgrri5LZn7OH!cG|%1lT%Ys#o%HKa6T*ji zwunC7qPr>bp7LJgdY$htdiou^lLo*XQAn+Kf2b6Qjm1_NlJjrxOH%BR?iE)RYJ5VzLpa?e;lB)pm!zM8_9M!F zLA^iohYNzOI(fe9^~^KGC!wgE8Lyna|8M9LGKbe zYovGw|2xp#Bh@@qSD^TwCm&obg_CJGl2*UM;{g&_g^x98y(Ps*r`3;KpTMsq_!Sx# zP+jBmJMx&~*)h4-k=r-Qd1hl54x^bzXsk-!=`hNw}QI}_CI6)BFOHwItdp)tnYKJGt(lCZl9 z9ZBUewAc9*hyJDZHAjjAo`0hjM@VAYS*#*Hw$-TFN3XV8%||qyi6?wnY0pulmNru0 zy;!r~y-4D&M-m=6X_WRN3PnowBB5@LD5kK+>4>6&gEnv4B&2KF8|HpUh$L zN3o(Gu)Fiv$a(zB8CLfNUO+v7BW$ev{XUZrA+M%Y zgH`Bj&he0PM|i5eK}&FO%=HB2E1zt#csa&0?~&>`Hh+XtC%E$w`bY4#0EIv;gioA@&Lf_bp`~bNAB~Pu`#r98UlI39 zQZG>()$ALbp1{{SGEiis$n7KX#y0N}cz8`6M!7zLMjy{#IJvyyiFyvplrhQsh`Q}j zav#rUki;pHdya<&g~vzCv1~l%|Ma7HSoEUBb6Xis$h20vd|J)_K0b-D&t%%@w^o zcN#h(3jrS;?*$=OAoT3e<%ON*~uJ?4<* z1rmD$#Z#ValjfZ3X>>IM#a(z9M3U<~Q-T#V%SI<)wUO zN>MDjMfuXj5hy)*?PAK&~ ziukxzJ$ZVJsWTotT}IE3S3y;8M8NmH(|E`l5lG{w=fCfs|5lH92&hH*N38x!8pCX66-DgVr&a+*E{}|7#bjCNv^wV~*i0|+9Z~vSl z)>i#fjSFggRQ=W}R{j#ZzK*rsAZ-;-vhVst+K=;|J2Rx6!amR9wf3>}yV%?_yn(Fp z7PK`6su9aso~$}+{0<*ALWz&@A(|yQg8CTV@)Ca4n_GjcZ{#jJ+QZ~ppem9z3e3Zl2YFD>kavj z9T(H^rYqrVkxz}h?;}I?QjaL%82YQ+(F}~{TF#*P3a&LtZ;q6^FHJw{oLABsLKaPqVagL zP8f+-;@b%$IxS|O+Gw6uJ6#n=>HHJToZ49|pJ^Lf=cu!0eA;`Y)=sVD886C}oi^|E zlDzoBR{5)?YCg0|+tKRF#yRG(S|>HfJ}Nn^9`e$PWV{~qSI8F`zR)@NQ_By-!ro~-{Ib<%8oJlFBe@twZ=ka3$* z^iSSt&NOzZQAexqLo^ny^}6Rqd`i*38jSnoaV{x5Oi5~hy2$ct)?D+zUgAIHN}zE( znbbzTG9E?`(3Wh2Y5jrIo7zE)s!*zpM!js5t6q!SrYwyrC{ou7$68rvy=yE5?eh>n z(#keEm+tc9TU;*rE+j*)Cb#tj1wW6B_>5TIcI9ueN6QR>7-!nQF1N z4${{2Xhp8pZ*B5c>z37ySM>OGnp(Ld8>O6TC9-|7UDG~Z#Ztnjb}?v`yH?4_8szh> z(S)@9kp=X8u0q4s2x}FAN}qzer7Ox0ugkb;yVvduvyMXHA^z6aRo1W;3yR9Cw78`8 zGv37UZi2%Hq&uZOG(xqteeW+GBE@G!0$QoN&--t@)0}CiklOdI(}bn#BSOfRgq6~` zy?aaKrJ|83TlXa|3{s(yGNquS(IGcQkl=le}d znV%;AX&xW7mdheq&7o?&&IwVx&cKu8()u>*lC)m=HnN%a>RW1B>V~YI{mQlpdF`(K z_RDK1tKHSNqxtPl`HHsx+pwc0EU|2HZCyKOVbjQu?UtQisy3;0Gm0+M8g<6kL+6_` zjwA1!-v*Ob$F5Jwr#__CNGKB0+=kARXr4~K?PwB+yp2vT!ZTC4< zmrI8n8_&qcb2FA(8uD#2mcZ}P@7y2at=L5E+&@c4e);8__Vw8;Cq74rZmVtc=r-)+ z$=H`vViZZcljSWHp~a^HOYhR1#vr9J)3^GHx|7znf0o9H@1f{KhPc-fpA?a%(Hytl zj@x>Ck8$%QgCN6m{QLD)1zj4?KSiI2jXqIdz5h;)`Wfe&nPaxzI z@zifn)@}gJE$3T@SbxpQEgMk-LCb#VEUHGg&2|U_59t4B&*z>?y93Af;QdEFe{tU$ zhuq*={fSZou5a6>Y3wE*A=3^QMeaHkI!|hi>`%Jqsor9ly5~`BuKjy#hg{44G#5px zf3CHNo~Pz8Pe-9`RWbaepKp^LdC()fkUIPty1D^L5Zz_FlKy)JxdL(9>n7Eb8|fb0$P2 ztx_}IEnh#Pn5QE>FEYM$4@@TYW<5u(n$`S?ouS_c&1{J^Gv-u;n+KWPX#a}Mew;Gb zrE@OMvBV|3O!x3L?=0kY6MW_CFJJq4ny+o0+Vi9K)@ZaKjeuS&y`5GX$D}rbV?Dg& zUf2iMXb;basW_ZTx91J5fwzuD$Bx?97W3`9ELL-t)JsgK6Um3$NjKV~tT_RT>=nhG z@hds@X>y9^O7rEacu;+9X+kl-J~ex(e+D_^mu4JdKj&vH@>{j)s8@S*5L@TQRQy$lV)f=Y3oi&uJw+r^-pE6PJzXY8G58T0M8Q6fH$#TJf5@N)Ekb zs>U?a>)Z3_hAA7TA-(CQWYH=-)Y z6*4qxE4!xoIsFcMulJF$>{JyWB5SGj3w9E={cFM`5uHZ6>;zQ5HbWR`C7)`n{;|G8 z&Ljcj*}gsfYz``n5%?5EIBzZ205aA%p(Od)ai8Qh)KV20W}R1OEx0`zh!G&F!;U8} z*_-h83!^_tE!~7xdYt6Gvzyt}?-u$8SUtCm6>hZ^`20yZ|1qt>bJA+7FgbKz>+tpZ zGq;lTNkljI69f1VtytDvlaQbMT?ENtzMEK>c3P`;((07uYqw5y9>|gN?}`DW)%2Yr zdacdb)2xr={CE9`uKk+Tc#c*&`G0BD8Cx3v_j<1XyqMPW>GUw*b??7#4+B0vwg}qv z9^NaW>#V#z{d&Fn@7ve!3N71CZByK{=SCd#Z?MTeT2_iybe~;TGJeb|sl5?mJ3Vzf zY26jC@7r;cB7|$3_iSD1as+G zRUs#&mUXX(i*CY2JSUT0S1CJI?^zLy)T8mKF7+Nhx(gq+D&0i3%t$ZG|3iG|2Ba+=ypQu^xTg}%)ZucSA&IE(@XmV>7(yst7vX zvkJj-^lX4%UF5%OZK2;A((YcnX(2xji1nMFu88*YDOuzpeB`H-ooJk@XEVCbW_W*+ z#Fq7ai=e31!w3yADvVp*mQahI-Z*skjzjC;%#v&4g&^&e z)V~vJA9uKGHr%xv=3lwWDLUaZVb4>xHsyEeRhZFE?#!&W|FPcsHvKpBv5Tkv9MO?Z z0zP*8VYL_a!0pSn6?D>O{yCTFowqvqHPn-x0GmFAC3zO~&n|||-e(!FqSTe&0d3m0 zo#eXK{}k3@E97I6I+la|*BS{*?jjHK#OIOu9jf-P=oNO?r5p7<;jVb{v@XP3n%s_5(??J5xW){2jb#%;V?=R??DHJ#b) z&n|pQYtR{hnpHb;b&}7l@YXqoiqrMaq=WoAhZ~KCAMoqf>r?x5zTGn{-~_KB{;_0~ z)B0@B;y9r@kQaVu)w4trXiw8y@Tq+RUUWorvwHr-&K zJui39PJ7OiD=(UlMSSk`s6fwdcbnbTe~V7w5guWwA34iB&UYE#U>3ZLrPax{qdXtu zYRJ8mX4Bo#KYEUkuN`(fdCEa(hm+5mwX4ZIchycRDw78cqc}fuy@2;tG!Vv@$uo_@ zy!9f$+Gui{`AOY zh@te;W>J*R)x(jUU8;U=TDy6@x_lg^CEP7YN{@Hx)aNP@xXsx6)@3nb?bt$`wt1A* zFRzEWPGGLSyt@N|>E5@-n$oBXpErxNFkcT{?MGKA{<)qg|6>S~q-0f-sX{tSx-#*II8n`P+4tL`g zM{`J_eTWVz_fY*upgPpT-9UEMKK!EC&Z5ySbZ61-;rsUSou!Ani|{a>Y6s#&nw@L` zVOhNv(H$)!)XUv&A)!ZWS1SqWcDkj6<@H)i_q3K!H{H@=!jo5Ou^*;r9>rnK9v(Y^ z$56`MfvkGxw}kkrm#$fq)yv<*TKln9PuAUnxK_@Msl{U}RGLR?E7W^f?gW-w(L^^P z-S07}U3nCqa8eANG2I^SI)%Gf#@&gi_?&|Dnzj&GK3%H_^Z9#7>parDth)tqIof7}~d5WPdpH>fpox)(g+`9{*))UXRY2Nx4 zMV-;?;j44_G6{DhlEP8;d}M{GTSHn%rH8yuBQKPAcOWs`GnK|(?M}q>DbO?Sv;>{v zu)%o@OYU@n?Np?u{fS{2%_26;cULi*K3ycekJEN>CTq6B`4QUL8P>k>F8YNw?m_kE zqJ-zdc?S83RFG5h%r%_}BZTP`8=W04PUCZCg!iwU6|?V< zFD&d+hf`|e+sZ&wyYvkK&Fe7TveHtowKDT?Rff}0TdiZk_soiFQ>Vs+R>pJp=e06k n0-d!o;R!y2&Ptr&vt^y^)HS=_1m|V!sr}LkM@O`PU!wm5_dGvS literal 0 HcmV?d00001 From cc94ef340f48eb0c90aeae4075f1923595c28361 Mon Sep 17 00:00:00 2001 From: Kavindu Dilshan Date: Wed, 8 Feb 2017 15:34:04 +0530 Subject: [PATCH 7/7] Added HelpTextProperty to SimpleSearchCondition.. --- .../UIItems/Finders/SearchConditionFactory.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/TestStack.White/UIItems/Finders/SearchConditionFactory.cs b/src/TestStack.White/UIItems/Finders/SearchConditionFactory.cs index 9c9393d5..98ba3624 100644 --- a/src/TestStack.White/UIItems/Finders/SearchConditionFactory.cs +++ b/src/TestStack.White/UIItems/Finders/SearchConditionFactory.cs @@ -75,6 +75,7 @@ public static SearchCondition CreateForXPath(string xpath, Window window) //var controlType = node.Attributes["ControlType"].Value; var frameworkId = node.Attributes["FrameworkId"].Value; var name = node.Attributes["Name"].Value; + var helpText = node.Attributes["HelpText"].Value; if (!String.IsNullOrEmpty(name)) { @@ -86,6 +87,11 @@ public static SearchCondition CreateForXPath(string xpath, Window window) return new SimpleSearchCondition(automationElement => automationElement.Current.AutomationId, new AutomationElementProperty(automationId, "AutomationId", AutomationElement.AutomationIdProperty)); } + else if (!String.IsNullOrEmpty(helpText)) + { + return new SimpleSearchCondition(automationElement => automationElement.Current.HelpText, + new AutomationElementProperty(helpText, "HelpText", AutomationElement.HelpTextProperty)); + } else if (!String.IsNullOrEmpty(className)) { return new SimpleSearchCondition(automationElement => automationElement.Current.ClassName,