Best FlaUI code snippet using FlaUI.UIA3.Patterns.ValuePattern
UIElement.cs
Source:UIElement.cs  
...11using G1ANT.Language;12using ControlType = FlaUI.Core.Definitions.ControlType;13using InvokePattern = FlaUI.UIA3.Patterns.InvokePattern;14using SelectionItemPattern = FlaUI.UIA3.Patterns.SelectionItemPattern;15using ValuePattern = FlaUI.UIA3.Patterns.ValuePattern;16using FlaUI.Core.Definitions;17namespace G1ANT.Addon.UI.Api18{19    public partial class UIElement20    {21        private WPathBuilder wPathBuilder = new WPathBuilder();22        private WPathStructure cachedWPath;23        public static UIElement RootElement { get; set; }24        private AutomationElement automationElement = null;25        public AutomationElement AutomationElement 26        { 27            get28            {29                if (automationElement == null)30                {31                    if (cachedWPath == null)32                        throw new NullReferenceException("AutomationElement has not been initialized");33                    var element = FromWPath(cachedWPath?.Value);34                    automationElement = element.AutomationElement;35                    Index = element.Index;36                }37                return automationElement;38            }39            private set40            {41                automationElement = value;42            }43        }44        private int _index = -1;45        public int Index 46        { 47            get48            {49                if (_index == -1)50                    _index = FindElementIndex();51                return _index;52            }53            private set => _index = value; 54        }55        private UIElement() { }56        public UIElement(string wPath)57        {58            cachedWPath = new WPathStructure(wPath);59        }60        public UIElement(AutomationElement element, int index = -1)61        {62            AutomationElement = element ?? throw new NullReferenceException("Cannot create UIElement class from empty AutomationElement");63            Index = index;64        }65        public static UIElement FromWPath(WPathStructure wPath)66        {67            return FromWPath(wPath.Value);68        }69        private int FindElementIndex()70        {71            var parent = AutomationElement?.GetParentControl();72            if (parent == null)73                return -1;74            return parent.FindAllChildren().ToList().FindIndex(x => x.Equals(AutomationElement));75        }76        public override bool Equals(Object obj)77        {78            return obj is UIElement elem && elem.AutomationElement.Equals(AutomationElement);79        }80        public static UIElement FromWPath(string wPath)81        {82            var element = new XPathParser<object>().Parse(wPath, new XPathUIElementBuilder(RootElement?.AutomationElement));83            if (element is UIElement uiElement)84            {85                return uiElement;86            }87            throw new NullReferenceException($"Cannot find UI element described by \"{wPath}\".");88        }89        public ToggleState GetToggledState()90        {91            switch(AutomationElement.ControlType)92            {93                case ControlType.CheckBox:94                    return AutomationElement.AsCheckBox().ToggleState;95                case ControlType.RadioButton:96                    return AutomationElement.AsRadioButton().IsChecked ? ToggleState.On : ToggleState.Off;97                default:98                    throw new Exception("Element is not CheckBox or RadioButton");99            }100        }101        public WPathStructure ToWPath(AutomationElement rootElement = null, bool rebuild = false, WPathBuilderOptions options = null)102        {103            if (cachedWPath == null || rebuild)104            {105                try106                {107                    var automationRoot = rootElement ?? AutomationSingleton.Automation.GetDesktop();108                    cachedWPath = wPathBuilder.GetWPathStructure(AutomationElement, automationRoot, options);109                }110                catch111                {112                    return new WPathStructure("");113                }114            }115            return cachedWPath;116        }117        public void MouseClick(EventTypes eventType, int? x, int? y)118        {119            var srcPoint = AutomationElement.GetClickablePoint();120            if (x.HasValue && x != 0 && y.HasValue && y != 0 && srcPoint != Point.Empty)121            {122                var relative = new Point(AutomationElement.BoundingRectangle.X + x.Value, AutomationElement.BoundingRectangle.Y + y.Value);123                switch (eventType)124                {125                    case EventTypes.MouseLeftClick:126                        Mouse.Click(MouseButton.Left, relative);127                        break;128                    case EventTypes.MouseRightClick:129                        Mouse.RightClick(relative);130                        break;131                    case EventTypes.MouseDoubleClick:132                        Mouse.DoubleClick(MouseButton.Left, relative);133                        break;134                }135            }136            else137            {138                switch (eventType)139                {140                    case EventTypes.MouseLeftClick:141                        AutomationElement.Click(true);142                        break;143                    case EventTypes.MouseRightClick:144                        AutomationElement.RightClick(true);145                        break;146                    case EventTypes.MouseDoubleClick:147                        AutomationElement.DoubleClick(true);148                        break;149                }150            }151        }152        public void Click()153        {154            if (AutomationElement.IsPatternSupported(InvokePattern.Pattern) && AutomationElement.Patterns.Invoke.TryGetPattern(out var invokePattern))155            {156                (invokePattern as InvokePattern)?.Invoke();157            }158            else if (AutomationElement.IsPatternSupported(SelectionItemPattern.Pattern) && AutomationElement.Patterns.SelectionItem.TryGetPattern(out var selectionPattern))159            {160                (selectionPattern as SelectionItemPattern)?.Select();161            }162            else if (AutomationElement.TryGetClickablePoint(out var pt))163            {164                var tempPos = MouseWin32.GetPhysicalCursorPosition();165                var currentPos = new Point(tempPos.X, tempPos.Y);166                var targetPos = new Point(pt.X, pt.Y);167                var mouseArgs = MouseStr.ToMouseEventsArgs(targetPos.X, targetPos.Y, currentPos.X, currentPos.Y, "left", "press", 1);168                foreach (var arg in mouseArgs)169                {170                    MouseWin32.MouseEvent(arg.dwFlags, arg.dx, arg.dy, arg.dwData);171                    Thread.Sleep(10);172                }173            }174            else175            {176                throw new Exception($"Could not click element: {AutomationElement.Name}");177            }178        }179        public void SetFocus()180        {181            AutomationElement.Focus();182            var currentFocusedElement = AutomationSingleton.Automation.FocusedElement();183            if (!AutomationElement.Equals(currentFocusedElement))184            {185                var parentWindow = AutomationElement.GetParentElementClosestToDesktopElement();186                if (parentWindow != null)187                {188                    parentWindow.Focus();189                    AutomationElement.Focus();190                }191            }192        }193        public void SetText(string text, int timeout)194        {195            if (AutomationElement.Patterns.Value.IsSupported && AutomationElement.Patterns.Value.TryGetPattern(out var valuePattern))196            {197                AutomationElement.Focus();198                ((ValuePattern)valuePattern).SetValue(text);199            }200            else if (AutomationElement.Properties.NativeWindowHandle != IntPtr.Zero)201            {202                AutomationElement.Focus();203                IntPtr wndHandle = AutomationElement.FrameworkAutomationElement.NativeWindowHandle;204                KeyboardTyper.TypeWithSendInput($"{SpecialChars.KeyBegin}ctrl+home{SpecialChars.KeyEnd}", null, wndHandle, IntPtr.Zero, timeout, false, 0); // Move to start of control205                KeyboardTyper.TypeWithSendInput($"{SpecialChars.KeyBegin}ctrl+shift+end{SpecialChars.KeyEnd}", null, wndHandle, IntPtr.Zero, timeout, false, 0); // Select everything206                KeyboardTyper.TypeWithSendInput(text, null, wndHandle, IntPtr.Zero, timeout, false, 0);207            }208            else209                throw new NotSupportedException("SetText is not supported");210        }211        public Rectangle GetRectangle()212        {...ValuePattern.cs
Source:ValuePattern.cs  
...5using FlaUI.UIA3.Identifiers;6using UIA = Interop.UIAutomationClient;7namespace FlaUI.UIA3.Patterns8{9    public class ValuePattern : ValuePatternBase<UIA.IUIAutomationValuePattern>10    {11        public static readonly PatternId Pattern = PatternId.Register(AutomationType.UIA3, UIA.UIA_PatternIds.UIA_ValuePatternId, "Value", AutomationObjectIds.IsValuePatternAvailableProperty);12        public static readonly PropertyId IsReadOnlyProperty = PropertyId.Register(AutomationType.UIA3, UIA.UIA_PropertyIds.UIA_ValueIsReadOnlyPropertyId, "IsReadOnly");13        public static readonly PropertyId ValueProperty = PropertyId.Register(AutomationType.UIA3, UIA.UIA_PropertyIds.UIA_ValueValuePropertyId, "Value");14        public ValuePattern(FrameworkAutomationElementBase frameworkAutomationElement, UIA.IUIAutomationValuePattern nativePattern) : base(frameworkAutomationElement, nativePattern)15        {16        }17        /// <inheritdoc />18        public override void SetValue(string value)19        {20            Com.Call(() => NativePattern.SetValue(value));21        }22    }23    public class ValuePatternPropertyIds : IValuePatternPropertyIds24    {25        public PropertyId IsReadOnly => ValuePattern.IsReadOnlyProperty;26        public PropertyId Value => ValuePattern.ValueProperty;27    }28}...ValuePattern
Using AI Code Generation
1using FlaUI.Core;2using FlaUI.Core.AutomationElements;3using FlaUI.Core.Definitions;4using FlaUI.UIA3;5using System;6using System.Collections.Generic;7using System.Linq;8using System.Text;9using System.Threading.Tasks;10{11    {12        static void Main(string[] args)13        {14            var app = FlaUI.Core.Application.Launch("notepad.exe");15            var automation = new UIA3Automation();16            var window = app.GetMainWindow(automation);17            var edit = window.FindFirstDescendant(cf => cf.ByControlType(ControlType.Edit)).AsTextBox();18            edit.SetValue("Hello World");19            Console.WriteLine(edit.Value);20            Console.ReadKey();21            app.Close();22        }23    }24}ValuePattern
Using AI Code Generation
1using FlaUI.Core.AutomationElements;2using FlaUI.Core.AutomationElements.Infrastructure;3using FlaUI.Core.Definitions;4using FlaUI.Core.Input;5using FlaUI.Core.WindowsAPI;6using FlaUI.UIA3.Patterns;7using System;8using System.Collections.Generic;9using System.Linq;10using System.Text;11using System.Threading.Tasks;12{13    {14        static void Main(string[] args)15        {16            var app = FlaUI.Core.Application.Launch(@"C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE");17            var mainWindow = app.GetMainWindow(FlaUI.Core.WindowsAPI.WindowVisualState.Maximized);18            var automationElement = mainWindow.AutomationElement;19            mainWindow.WaitWhileBusy();20            var fileMenu = automationElement.FindFirstDescendant(cf => cf.ByControlType(ControlType.Menu).And(cf.ByName("File")));21            fileMenu.Click();22            var newMenuItem = fileMenu.FindFirstDescendant(cf => cf.ByControlType(ControlType.MenuItem).And(cf.ByName("New")));23            newMenuItem.Click();24            var blankWorkbookMenuItem = newMenuItem.FindFirstDescendant(cf => cf.ByControlType(ControlType.MenuItem).And(cf.ByName("Blank workbook")));25            blankWorkbookMenuItem.Click();26            var cellA1 = automationElement.FindFirstDescendant(cf => cf.ByControlType(ControlType.Custom).And(cf.ByName("A1")));27            cellA1.Click();28            var valuePattern = cellA1.Patterns.Value.Pattern;29            valuePattern.SetValue("Hello");30            var cellA2 = automationElement.FindFirstDescendant(cf => cf.ByControlType(ControlType.Custom).And(cf.ByName("ValuePattern
Using AI Code Generation
1using FlaUI.Core.AutomationElements;2using FlaUI.Core.AutomationElements.Infrastructure;3using FlaUI.Core.Definitions;4using FlaUI.Core.Patterns;5using FlaUI.UIA3.Patterns;6using System;7using System.Collections.Generic;8using System.Linq;9using System.Text;10using System.Threading.Tasks;11{12    {13        public static void SetValue(AutomationElement element, string value)14        {15            var valuePattern = element.Patterns.Value.PatternOrDefault;16            if (valuePattern != null)17            {18                valuePattern.SetValue(value);19            }20        }21    }22}23using FlaUI.Core.AutomationElements;24using FlaUI.Core.AutomationElements.Infrastructure;25using FlaUI.Core.Definitions;26using FlaUI.Core.Patterns;27using FlaUI.UIA3.Patterns;28using System;29using System.Collections.Generic;30using System.Linq;31using System.Text;32using System.Threading.Tasks;33{34    {35        public static void SetValue(AutomationElement element, string value)36        {37            var valuePattern = element.Patterns.Value.PatternOrDefault;38            if (valuePattern != null)39            {40                valuePattern.SetValue(value);41            }42        }43    }44}45using FlaUI.Core.AutomationElements;46using FlaUI.Core.AutomationElements.Infrastructure;47using FlaUI.Core.Definitions;48using FlaUI.Core.Patterns;49using FlaUI.UIA3.Patterns;50using System;51using System.Collections.Generic;52using System.Linq;53using System.Text;54using System.Threading.Tasks;55{56    {57        public static void SetValue(AutomationElement element, string value)58        {59            var valuePattern = element.Patterns.Value.PatternOrDefault;60            if (valuePattern != null)61            {62                valuePattern.SetValue(value);63            }64        }65    }66}67using FlaUI.Core.AutomationElements;68using FlaUI.Core.AutomationElements.Infrastructure;69using FlaUI.Core.Definitions;70using FlaUI.Core.Patterns;71using FlaUI.UIA3.Patterns;72using System;73using System.Collections.Generic;74using System.Linq;ValuePattern
Using AI Code Generation
1using FlaUI.Core;2using FlaUI.Core.AutomationElements;3using FlaUI.Core.AutomationElements.Infrastructure;4using FlaUI.Core.Definitions;5using FlaUI.Core.Identifiers;6using FlaUI.Core.Patterns;7using FlaUI.Core.Tools;8using FlaUI.UIA3;9using FlaUI.UIA3.Patterns;10using System;11using System.Collections.Generic;12using System.Linq;13using System.Text;14using System.Threading.Tasks;15{16    {17        static void Main(string[] args)18        {19            var app = Application.Launch("notepad.exe");ValuePattern
Using AI Code Generation
1using System;2using System.Windows.Automation;3using FlaUI.Core;4using FlaUI.Core.AutomationElements;5using FlaUI.Core.AutomationElements.Infrastructure;6using FlaUI.Core.Definitions;7using FlaUI.Core.Input;8using FlaUI.Core.WindowsAPI;9using FlaUI.UIA3;10using FlaUI.UIA3.Patterns;11{12    {13        static void Main(string[] args)14        {15            var app = FlaUI.Core.Application.Launch("notepad.exe");16            var window = app.GetMainWindow(Automation);17            var textBox = window.FindFirstDescendant(cf => cf.ByControlType(ControlType.Edit));18            textBox.AsTextBox().SetValue("Hello World!");19            Console.ReadKey();20            app.Close();21        }22        private static readonly UIA3Automation Automation = new UIA3Automation();23    }24}ValuePattern
Using AI Code Generation
1using FlaUI.Core.AutomationElements;2using FlaUI.Core.Patterns;3using FlaUI.UIA3;4using System;5using System.Collections.Generic;6using System.Linq;7using System.Text;8using System.Threading.Tasks;9{10    {11        static void Main(string[] args)12        {13            var automation = new UIA3Automation();14            var window = automation.GetDesktop().FindFirstDescendant(x => x.ByName("Form1"));15            var textBox = window.FindFirstDescendant(x => x.ByName("textBox1"));16            var valuePattern = textBox.Patterns.Value.Pattern;17            var value = valuePattern.Value;18            Console.WriteLine(value);19            Console.ReadLine();20        }21    }22}23private void button1_Click(object sender, EventArgs e)24{25    textBox1.Text = "Hello World";26}27private void Form1_Load(object sender, EventArgs e)28{29    var automation = new UIA3Automation();30    var window = automation.GetDesktop().FindFirstDescendant(x => x.ByName("Form1"));ValuePattern
Using AI Code Generation
1using FlaUI.Core.AutomationElements;2using FlaUI.Core.AutomationElements.Infrastructure;3using FlaUI.UIA3.Patterns;4using System.Windows.Automation;5using System.Windows.Automation.Text;6using System;7{8    {9        public Form1()10        {11            InitializeComponent();12        }13        private void button1_Click(object sender, EventArgs e)14        {15            AutomationElement element = AutomationElement.FromHandle((IntPtr)int.Parse(textBox1.Text));16            var valuePattern = new ValuePattern(element.AsNative());17            valuePattern.SetValue(textBox2.Text);18        }19    }20}ValuePattern
Using AI Code Generation
1var automation = FlaUI.Core.AutomationElements.AutomationFactory.GetAutomation();2var element = automation.FromPoint(new FlaUI.Core.Input.Point(0, 0));3var valuePattern = element.Patterns.Value.PatternOrDefault;4var value = valuePattern.Value;5Console.WriteLine(value);6var automation = FlaUI.Core.AutomationElements.AutomationFactory.GetAutomation();7var element = automation.FromPoint(new FlaUI.Core.Input.Point(0, 0));8var valuePattern = element.Patterns.Value.PatternOrDefault;9valuePattern.SetValue("Hello World");10var automation = FlaUI.Core.AutomationElements.AutomationFactory.GetAutomation();11var element = automation.FromPoint(new FlaUI.Core.Input.Point(0, 0));12var valuePattern = element.Patterns.Value.PatternOrDefault;13var value = valuePattern.Value;14Console.WriteLine(value);15var automation = FlaUI.Core.AutomationElements.AutomationFactory.GetAutomation();16var element = automation.FromPoint(new FlaUI.Core.Input.Point(0, 0));17var valuePattern = element.Patterns.Value.PatternOrDefault;18valuePattern.SetValue("Hello World");19var automation = FlaUI.Core.AutomationElements.AutomationFactory.GetAutomation();ValuePattern
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using FlaUI.Core.AutomationElements;7using FlaUI.Core.AutomationElements.Infrastructure;8using FlaUI.Core.Definitions;9using FlaUI.Core.Tools;10using FlaUI.UIA3;11using FlaUI.UIA3.Patterns;12{13    {14        static void Main(string[] args)15        {16            using (var app = FlaUI.Core.Application.Launch(@"C:\Windows\System32\calc.exe"))17            {18                var automation = new UIA3Automation();19                var window = app.GetMainWindow(automation);20                var textbox = window.FindFirstDescendant(cf => cf.ByControlType(ControlType.Edit)).AsTextBox();21                var valuePattern = textbox.Patterns.Value.Pattern;22                Console.WriteLine("Value of the textbox is: " + valuePattern.Value);23                Console.WriteLine("Max length of the textbox is: " + valuePattern.MaxLength);24                Console.WriteLine("Min length of the textbox is: " + valuePattern.MinLength);25                Console.WriteLine("Is the textbox ReadOnly? " + valuePattern.IsLearn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
