Danp2 / au3WebDriver

Web Driver UDF for AutoIt
MIT License
107 stars 21 forks source link
autoit udf w3c webdriver

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).

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]

[^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.

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

To the top