Skip to content

Releases: GCuser99/SeleniumVBA

v4.6

09 Sep 20:53
Compare
Choose a tag to compare
version update

General "house cleaning" update...
Refactored WebDriverManager class:
    - Incorporated recently published ChromeDriver release end-points that do not require json parsing
    - Added "channel" argument to GetLatestDriverVersion method [@6DiegoDiego9]
    - Improved use of RegExp for searching/parsing
    - General code cleanup
Reviewed object instantiation:
    - Removed New_WebElement & New_WebShadowRoot methods of ClassFactory class - these cannot be instantiated with New keyword
    - Bug fix: if WebElements class is instantiated with New and element objects added with Add method, Highlight and UnHighlight fail
    - Added example in test_Highlight module to test above bug fix
    - Set class attribute VB_Creatable = False in DLL for all classes that cannot be instantiated with New
    - Added table to "Object Instantiation" section of Wiki summarizing means of instantiation for each class
Removed all DEPRECATED methods/properties (see https://github.com/GCuser99/SeleniumVBA/discussions/86)
Renamed GetAlertText method of WebAlert class to GetText
Changed RemoveAll method of WebCookies and WebElements classes from Friend to Public to be consistent with associated Public Remove methods in same classes
Bug fix: new (default) Json Viewer feature of Edge browser broke PageToJson* methods - now supported
Added SwitchTo method to WebWindow class (synonym for Activate method)
Replaced all instantiations of WebJsonConverter object with predeclared reference [@6DiegoDiego9]
Modified test modules code for all of above
DLL installer now checks for 64-bit Office and reports to user if not [private email from user]
Replaced BuildAddin.xlsm in dev\tools with a refactored and more complete UpdateVersion.xlsm
Updated Readme files, Wiki Help topics, and Object Model Overview
Minor code cleanups

v4.5

21 Aug 00:30
Compare
Choose a tag to compare
version update

Refactored WebDriverManager to handle new ChromeDriver api
Added DeleteDriver* methods to WebDriverManager class to help facilitate testing
Made some efficiency improvements using RegExp for parsing WebDriver release json
Added "platform" (32-bit vs 64-bit) input argument to Align* and DownloadAndInstall methods of WebDriverManager class
Removed InitializeFor* methods of WebCapabilities class - no utility
Updated Wiki Object Model section
Updated README.md file

v4.4

12 Aug 12:37
Compare
Choose a tag to compare
version update

Added WebWindow and WebWindows classes for improved windows management:
    - More OOP approach - windows handles not required
    - Solves windows activation issues mentioned in Selenium Docs
    - Added SwitchToByTitle and SwitchToNext methods for improved window switching
    - Added ActiveWindow and Windows methods to WebDriver class to facilitate above
    - Modified test_Windows module to illustrate improvements above
    - Added associated section to SeleniumVBA Wiki (Managing Windows)
Added optional modifierKeys input argument for Click method of Webdriver/WebElement classes
New CtrlKey method added to WebKeyboard class
Moved private getResponseErrorMessage and isResponseError of WebDriver class to WebShared module
Updated no-registration example in dev directory of GitHub repository
Updated main README.md file
Improved ActiveX DLL work-around for twinBasic compiler Err.Raise error which is still not fixed
Code cleanup:
    - Capitalized first character of all Selector enums in WebDriver class for consistency
    - Replaced LCase, UCase, and Format VBA functions with typed-equivalents
    - a few other minor edits
Marked as DEPRECATED:
    - Control method of WebKeyboard class - use Ctrl method
    - GetWindowHandles of WebDriver class - use WebWindows.Handles
    - SwitchToNewWindow of WebDriver class - use WebWindows.SwitchToNew
    - SwitchToWindow of WebDriver class - use WebWindows.Item().Activate
    - GetTitle of WebDriver class - use WebWindow.Title
    - CloseWindow of WebDriver class - use WebWindow.CloseIt
    - GetWindowRect of WebDriver class - use WebWindow.Bounds property
    - SetWindowRect of WebDriver class - use WebWindow.Bounds property
    - SetWindowSize of WebDriver class - use WebWindow.SetSize
    - SetWindowPosition of WebDriver class - use WebWindow.SetPosition
    - MaximizeWindow of WebDriver class - use WebWindow.Maximize
    - FullScreenWindow of WebDriver class - use WebWindow.FullScreen
    - MinimizeWindow of WebDriver class - use WebWindow.Minimize
Reminder of DEPRECATED methods/properties carried over from v4.3:
    - AlertAccept of the WebDriver class - use SwitchToAlert.Accept
    - AlertDismiss of the WebDriver class - use SwitchToAlert.Dismiss
    - GetAlertText of the WebDriver class - use SwitchToAlert.GetAlertText
    - SetAlertText of the WebDriver class - use SwitchToAlert.SendKeys
    - SetFocusNoScroll of the WebDriver/WebElement classes - use SetFocus

Famous last words - this is probably the last "development" update I'll make - going into maintainence mode for now... I will post a discussion about future status of DEPRECATED methods and properties to get your input, if you have any. I also need to update the ActiveX DLL once twinBasic fixes the Err.Raise bug.

v4.3

22 Jul 13:59
Compare
Choose a tag to compare
version update

Improved Alert management
  - added WebAlert class
  - added SwitchToAlert method of WebDriver class to wait up to a user-specified maximum time for alert to show, and then return a WebAlert object for further interaction (Accept, Dismiss, SendKeys, and GetAlertText)
  - removed SendAlert method of WebDriver class (limited usefullness - reversion from v4.2)
Added SendKeysToOS method of WebDriver class to send keys to (possibly execution-blocking) non-browser windows [@GHRyunosuke, @6DiegoDiego9]
Improved SendKeys support
  - Refactored to redirect to WebActionChain's Sendkeys for special keys support
  - Added more special keys to WebKeyboard class as per latest W3C WebDriver document
  - Added Chord method to WebKeyboard class for structured approach to using modifier keys (Shift, Ctrl, Alt)
  - Added Repeat method to WebKeyboard class for concatenating a repeated substring a user-specified number of times
  - Modifier keys found in a key sequence are now considered "sticky", ie, characters that follow are modified until a special Null key is found)
  - changed default value of clearBeforeTyping argument of SendKeys method to False
Added QuerySelector and QuerySelectorAll methods to WebDriver/WebElement classes (same as FindElementByCssSelector and FindElementsByCssSelector methods)
Added more options to SetFocus method of WebDriver/WebElement classes (SetFocusNoScroll no longer needed)
Added HasFocus method of WebDriver/WebElement classes
Refactored Click method of WebDriver class to click on active element if no element specified
Refactored WebActionChain class for better clarity, made ResetActions public, and removed ResetActions from Perform method because it was interfering with JavaScript alerts following any triggering action
Refactored WaitUntilReady, WaitForDownload, WaitUntilNotPresent, and IsAlertPresent for more clarity and consistency
Added/modified test procedures to reflect/demonstrate above
Added "Managing JavaScript Alerts" and "Browser-Keyboard Interaction with SendKeys" sections to the Wiki
General code cleanup
  - removed unnecessary "New Dictionary" passed to params argument of private execute method
  - removed unnecessary arguments passed to private execute with CMD_CLEAR_ELEMENT command
Marked as DEPRECATED the following methods - please use the available alternatives:
  - AlertAccept, AlertDismiss, IsAlertPresent, GetAlertText, SetAlertText of the WebDriver class - use SwitchToAlert instead
  - SetFocusNoScroll of the WebDriver/WebElement classes - use SetFocus instead

v4.2

20 Jun 15:35
Compare
Choose a tag to compare
version update

Added ExecuteCDP method to WebDriver class to expose Chrome DevTools Protocol methods for browser automation
Added ExecuteCmd method to WebDriver class to facilitate testing of new/unwrapped Selenium WebDriver commands
Added SaveBase64StringToFile, and ResolvePath helper methods for above to WebDriver class
Added GetElementId helper method for above to WebDriver and WebElement classes
Added SendAlert method to WebDriver class
Refactored execute procedure of WebDriver class for improved clarity and error handling:
	- Added optional receiveTimeout input argument
	- Moved OpenBrowser-specific error handling to OpenBrowser method
	- Added code to handle non-standard Selenium and server communication errors
	- Added clientStatus error code to response package for caller error handling
Added implicit wait, page load timeout, and script timeout default parameters to SeleniumVBA ini file
Added globals to WebDriver class to track timeout settings for avoiding unnecessary calls to Selenium WebDriver
Extended OpenBrowser receiveTimeout from 3 secs to 10 secs to accomodate slower computers
Added optional arguments to NavigateToFile method of WebDriver class to align with same in NavigateTo method
Added file-exits check to NavigateToFile method of WebDriver class
Modified DefaultIOfolder get property of WebDriver class to return the default path
Added full screenshot option to SaveScreenshot method of WebDriver class
Added SetGeolocationAware method to WebCapabilities class to turn on/off browser geolocation
Added CtrlShiftKey method to WebActionChain class
Added test_ExecuteCmd and test_ExcuteCDP standard modules
Removed test_UserAgent standard module
Added more test procedures to test_ExecuteScript, test_Wait, test_IsPresent and others
Minor code mods and cleanup
Designed DLL work-around for twinBASIC Err.Raise issue https://github.com/twinbasic/twinbasic/issues/464
Updated Help and Object model pages in Wiki, and SeleniumVBA Readme file

v4.1

19 May 16:20
Compare
Choose a tag to compare
version update

Enhancements\fixes to ScrollIntoView method of WebDriver and WebElement classes [@6DiegoDiego9]
Set shorter default timeout when executing "capabilities" commands if no web communication [@6DiegoDiego9]
More user-friendly error is raised when unsupported XPath selector is used in Shadow Roots [@6DiegoDiego9]
Added IsPresent method to WebElement class [@GHRyunosuke, @GCUser99]
Added test_IsPresent module to testing source [@GCUser99]
Minor cleanups [@6DiegoDiego9, @GCUser99]
Refactored code base for proper handling of Unicode characters in strings: [@GCUser99]
    Replaced all Ansi Windows API declares with Unicode Wide versions
    Replaced all native VBA7 file system functions with FSO and ADODB versions
    Added ADODB library to references
    Modified CreateSettingsFile method of WebDriver class to output Unicode text

v4.0

06 May 16:02
Compare
Choose a tag to compare
version update

Fixed bug in GetLatestDriverVersion method of WebDriverManager class that prevented minor build updates for IEDriverServer from being recognized
Fixed bug in WaitForDownload method of WebDriver class that would occasionally cause an infinite loop while waiting for download
Minor updates to README files and test_Capabilities module

v3.9

28 Apr 20:25
Compare
Choose a tag to compare
version update

Fixed bug in addToOptionsList of WebCapabilities class that was not correctly merging runtime specified capabilities with preloaded capabilities
Added new headless mode argument value to Edge browser in WebCapabilities class
Added optional parameter to IsPresent method of WebDriver class to allow user to obtain a reference to the element object, if present [@6DiegoDiego9]

v3.8

27 Apr 18:05
Compare
Choose a tag to compare

Fixed bug in FindElementsFromShadowRoot method of WebDriver class [@6DiegoDiego9]
Implemented new headless mode for Chrome browser - see issue #78 concerning Edge browser
Fixed bug in RunIncognito method of WebCapabilities class (IE browser not set correctly)
Removed error trap for Firefox browser in GetArialRole and GetArialLabel methods of WebDriver class (supported for Geckodriver v0.33.0 and Firefox browser v113)
Removed comment in PrintPDF method of WebDriver class warning that the PrintPDF method only applies to headless mode - this condition is no longer necessary.
Modified test_Print module to reflect the changes in PrintPDF

v3.7

21 Mar 00:18
Compare
Choose a tag to compare
version update

Fixed GetWindowThreadProcessId case sensitivity problem [@GHRyunosuke, @6DiegoDiego9]
Fixed Regex issue concerning extracting VBA window title used to find active VBA project folder path [@GHRyunosuke, @6DiegoDiego9]