FlaUI v3.0.0 Release Notes
Release Date: 2019-12-09 // over 4 years ago-
Introduction
๐ This release combines all changes from the 2.x pre-release versions and also new features.
The main feature is the .NET Core/.NET Standard compatibility for FlaUI.Core and FlaUI.UIA3.๐ฅ Breaking changes
- ๐ Renamed BasicAutomationElementBase to FrameworkAutomationElementBase
- Consistent naming for the *Id interfaces/classes (eg. IDockPatternProperties to IDockPatternPropertyIds)
- Reworked events
- The
Find...
methods not do not use Retry anymore, the developer himself needs to decide if he wants to use a retry or not. - ๐ Moved DrawHighlight to extension methods so that they are fluent and can be made null-safe.
- Reworked Retry
- New flag: throwOnTimeout - Defines if Retry should throw when the timeout is reached.
- New flag: ignoreException - Defines if Retry should continue in case of an exception.
- New flag: lastValueOnTimeout - Defines if Retry should return the last successful value when it gets to a timeout.
- New flag: defaultOnTimeout - Defines if Retry should return the default value on a timeout.
- New Property: timeoutMessage - Allows adding a custom message when a timeout occurs when retrying.
- Renamed Retry.While to Retry.WhileTrue
- Added new Retry methods: WhileNull, WhileNotNull, WhileEmpty, Retry.WhileFalse
- Added a
RetryResult
object that is returned on theRetry
methods which contains information about the execution of the currentRetry
- Added tests
- ๐ Moved AutomationElement one up in the namespace tree
- Made the
As
methods extension methods again - โ Removed custom Point/Rectangle and use the one from System.Drawing
- ๐ Moved
Capture
into theCapturing
namespace - All
FindIndexed
are consistently renamed toFindAt
- 0๏ธโฃ Renamed
Retry.Interval
toRetry.DefaultInterval
- 0๏ธโฃ Renamed
Retry.Timeout
toRetry.DefaultTimeout
โจ Enhancements
- .NET Core and Standard compatibility
- โ Added capture overlays (mouse and info bar)
- โ Added a video recorder (see Capturing)
- โก๏ธ Updated the interop dlls
- โ Added missing features from .NET 4.7.1 in UIA2
- โ Added missing features from newer interop in UIA3
- Transaction- and ConnectionTimeout
- Selection2 pattern
- New text attributes
- New automation properties (CenterPoint, FillColor, ... see f2b444e for more)
- FindWithOptions
- New events
- UIA3TextRange3
- ConnectionRecoveryBehaviorOptions and CoalesceEventsOptions
- MatchSubstring for property searching
- Code cleanups
- โ Added generic
AsType
- ๐ Use
UtcNow
instead ofNow
forRetry
Wait.UntilInputIsProcessed
now has an optional timespan parameter- Reworked
OperationSystems
a bit - Retry, WaitWhileBusy, WaitWhilemainHandleIsMissing return a bool now to indicate success or failure
- Capture does not focus the element anymore before capturing as this could have side effects
- โ Added missing events
- โ Added TextRange3
- ๐ง Made log levels configurable, added a logger where you can notify for logging events, added an NUnitProgressLogger which logs in real time to the nunit console
- โ Added WaitUntilClickable and WaitUntilEnabled
- 0๏ธโฃ Default value for ControlType (thanks to @lukasvogel)
- Implemented mouse drag from point to point
- โ Added a condition to search by a Framework Id (thanks to @SSHenninger)
- โ Added
AnimationDuration
toComboBox
- โ Added a timeout message to
Retry
- โ Added
TextAttributeLibrary
- โ Added
Retry.Search
methods - โ Added
IsAvailable
property - โ Added
.As<T>
method - โจ Enhanced
DataGrid
support for WPF (thanks @sparerd) - ๐ More documentation
- โ Added various fallbacks to Win32 methods when UIA fails (thanks @ddeltasolutions)
- โ Added Touch input support
- ๐ฆ Exposed MovePixelsPerMillisecond and MovePixelsPerStep in Mouse
- โ Added IsChecked property for menu item (thanks @ddeltasolutions)
๐ Bug fixes
- โ Added some sleeps to the mouse drag
- Made xpath searching more robust (thanks to @lukasvogel)
- Correctly use collapse in the expand pattern
- ๐ Fixed
LabeledBy
property - ๐ Fixed null exception when getting the mouse cursor
- ๐ Fixed an issue that the mouse cursor was not set correctly on multi-monitor environments