Skip to content

Danp2/au3WebDriver

Repository files navigation

Welcome to au3WebDriver

license contributors repo size last commit release os stars

Description | Documentation | Features | Getting started | Configuration | Contributing | License | Acknowledgements

Description

This au3WebDriver UDF (project) allows to interact with any browser that supports the W3C WebDriver specifications. Supporting multiple browsers via the same code base is now possible with just a few configuration settings.

Documentation

Reference Description
W3C WebDriver Official W3C WebDriver standard/specification.
πŸ“š WebDriver Wiki Further information about this UDF (project) like big picture, capabilities, troubleshooting and more.
πŸ“– au3WebDriver.chm Help file that comes with this UDF (project) download.
πŸ“™ Change Log Record of all notable changes to the project

Features

Browser support

Chrome Edge Firefox Opera
Chrome48 Edge48 Firefox48 Opera48

Functions

Core Functions

Name Description
_WD_CreateSession Request new session from web driver.
_WD_DeleteSession Delete existing session.
_WD_Status Get current web driver state.
_WD_GetSession Get details on existing session.
_WD_Timeouts Set or retrieve the session timeout parameters.
_WD_Navigate Navigate to the designated URL.
_WD_Action Perform various interactions with the web driver session.
_WD_Window Perform interactions related to the current window.
_WD_FindElement Find element(s) by designated strategy.
_WD_ElementAction Perform action on designated element.
_WD_ExecuteScript Execute Javascipt commands.
_WD_Alert Respond to user prompt.
_WD_GetSource Get page source.
_WD_Cookies Gets, sets, or deletes the session's cookies.
_WD_Option Sets and get options for the web driver UDF.
_WD_Startup Launch the designated web driver console app.
_WD_Shutdown Kill the web driver console app.

Helper Functions

Name Description
_WD_Attach Attach to existing browser tab.
_WD_CheckContext Check if browser context is still valid.
_WD_ConsoleVisible Control visibility of the webdriver console app.
_WD_DebugSwitch Switch to new debug level or switch back to saved debug level.
_WD_DispatchEvent Create and dispatch events.
_WD_DownloadFile Download file and save to disk.
_WD_ElementActionEx Perform advanced action on designated element.
_WD_ElementOptionSelect Find and click on an option from a Select element.
_WD_ElementSelectAction Perform action on designated Select element.
_WD_ElementStyle Set/Get element style property.
_WD_FrameEnter Enter the specified frame.
_WD_FrameLeave Leave the current frame, to its parent.
_WD_FrameList Retrieves a detailed list of the main document and all associated frames.
_WD_FrameListFindElement Search the current document and return locations of matching elements.
_WD_GetBrowserPath Retrieve path to browser executable from registry.
_WD_GetBrowserVersion Get version number of specified browser.
_WD_GetContext Retrieve the element ID of the current browsing context.
_WD_GetDevicePixelRatio Returns an integer indicating the DevicePixelRatio.
_WD_GetElementById Locate element by id.
_WD_GetElementByName Locate element by name.
_WD_GetElementByRegEx Find element by matching attributes values using Javascript regular expression.
_WD_GetElementFromPoint Retrieves reference to element at specified point.
_WD_GetFrameCount Returns the number of frames/iframes in the current document context.
_WD_GetFreePort Locate and return an available TCP port within a defined range.
_WD_GetMouseElement Retrieves reference to element below mouse pointer.
_WD_GetShadowRoot Retrieves the shadow root of an element.
_WD_GetTable Return all elements of a table.
_WD_GetWebDriverVersion Get version number of specifed webdriver.
_WD_HighlightElements Highlights the specified elements.
_WD_IsFullScreen Return a boolean indicating if the session is in full screen mode.
_WD_IsLatestRelease Compares local UDF version to latest release on Github.
_WD_IsWindowTop Returns a boolean of the session being at the top level, or in a frame(s).
_WD_JsonActionKey Formats keyboard "action" strings for use in _WD_Action
_WD_JsonActionPause Formats pause "action" strings for use in _WD_Action
_WD_JsonActionPointer Formats pointer "action" strings for use in _WD_Action
_WD_JsonCookie Formats "cookie" JSON strings for use in _WD_Cookies.
_WD_LastHTTPResponse Return the response of the last WinHTTP request.
_WD_LastHTTPResult Return the result of the last WinHTTP request.
_WD_LinkClickByText Simulate a mouse click on a link with text matching the provided string.
_WD_LoadWait Wait for a browser page load to complete before returning.
_WD_NewTab Create new tab in current browser session.
_WD_PrintToPDF Print the current tab in paginated PDF format.
_WD_Screenshot Takes a screenshot of the Window or Element.
_WD_SelectFiles Select files for uploading to a website.
_WD_SetElementValue Set value of designated element.
_WD_SetTimeouts User friendly function to set webdriver session timeouts.
_WD_Storage Provide access to the browser's localStorage and sessionStorage objects.
_WD_UpdateDriver Replace web driver with newer version, if available.
_WD_WaitElement Wait for an element in the current tab before returning.
_WD_WaitScript Wait for a JavaScript snippet to return true.
_WD_jQuerify Inject jQuery library into current session.

CDP Functions

Name Description
_WD_CDPExecuteCommand Execute CDP command.
_WD_CDPGetSettings Retrieve CDP related settings from the browser.

Capabilities Functions

Name Description
_WD_CapabilitiesStartup Start new Capabilities build
_WD_CapabilitiesAdd Add capablitities to JSON string
_WD_CapabilitiesGet Get the JSON string
_WD_CapabilitiesDump Dump to console
_WD_CapabilitiesDefine Define a new capability by selecting a type and specifying a name

Getting started

Preconditions

Download and add the following mandatory Third-Party UDFs to your project folder (independent of the browser you want to automate).

  • Mandatory βœ”
    • Json UDF - Archive includes Json.au3 & BinaryCall.au3.
    • WinHTTP UDF - Archive includes WinHttp.au3 & WinHttpConstants.au3.
  • Optional ⚠

Download and install one of the following WebDrivers (depending on the browser type and version you want to automate).

Browser Download Implementation status
Chrome16 Chrome Status
Edge16 Edge Status
Firefox16 Firefox Status 1
Opera16 Opera 2

Limitation notice. 3

Installation

To automate your browser, follow the following steps.

  1. Download at least the mandatory Third-Party UDFs.
  2. Move the UDFs to your project folder or to a directory where AutoIt can find them.
    • All wd_*.au3 files and the Third-Party UDFs *.au3 should be placed in the same directory.
    • Otherwise you have to adjust the #include statements in the files.
  3. Move your desired WebDriver of choice to the directory containing the wd_*.au3 files.

Usage

Run wd_demo.au3, choose your "Browser" from the dropdown and press the "Run Demo!" button that will perform the "DemoNavigation" demo to validate your installation.

Configuration

Useful information about possible configurations following soon.

Github Integration

To ensure your GitHub project always has the latest version of the UDF --

  1. Open your prefered shell (cmd, powershell, bash, zsh)
  2. Navigate to your GitHub Autoit repository
  3. Run git submodule add https://github.com/Danp2/au3WebDriver
  4. (OPTIONALLY) Run git mv au3WebDriver Includes\au3WebDriver to relocate the UDF into an Includes folder

Contributing

Just look at CONTRIBUTING, thank you!

License

Distributed under the MIT License. See LICENSE for more information.

Acknowledgements

  • Opportunity by GitHub
  • Badges by Shields
  • Thanks to the authors of the Third-Party UDFs
    • Json UDF by @Ward and @Jos
    • WinHTTP UDF by @trancexx/@dragana-r
    • WinHttp_WebSocket UDF by @Danp2
  • Thanks to the maintainers
    • Thanks to @Danp2 for the project idea, creation and maintenance
    • Thanks to @mLipok for his wd_capabilities.au3
    • Thanks to @Sven-Seyfert for the project logo
    • Big thanks to all the hard-working contributors

To the top

Footnotes

  1. Login Required ↩

  2. Derived from ChromeDriver per project ReadMe ↩

  3. Not all WebDriver functions have been fully implemented by each browser. Keep that in mind and check the "Implementation status" for your desired WebDriver of choice. ↩