au3WebDriver
au3WebDriver copied to clipboard
Web Driver UDF for AutoIt
Welcome to au3WebDriver
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. |
📖 | Webdriver.chm | Function CHM help file that comes with this UDF (project) download. |
Features
Browser support
Chrome | Edge | Firefox | Opera |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
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_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_GetBrowserPath | Retrieve path to browser executable from registry. |
_WD_GetBrowserVersion | Get version number of specified browser. |
_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_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_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 ⚠
- HtmlTable2Array UDF - Extraction of data from HTML tables to an array.
- WinHttp_WebSocket UDF - Needed for websocket CDP functionality.
Download and install one of the following WebDrivers (depending on the browser type and version you want to automate).
Browser | Download | Implementation status |
---|---|---|
![]() |
Chrome | Status |
![]() |
Edge | Status |
![]() |
Firefox | Status [^1] |
![]() |
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.
- Download at least the mandatory Third-Party UDFs.
- 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.
- 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.
Result example
In case you use Firefox, the result should look similar to this:
1577745813519 geckodriver DEBUG Listening on 127.0.0.1:4444
1577745813744 webdriver::server DEBUG -> POST /session {"capabilities": {"alwaysMatch": {"browserName": "firefox", "acceptInsecureCerts":true}}}
1577745813746 geckodriver::capabilities DEBUG Trying to read firefox version from ini files
1577745813747 geckodriver::capabilities DEBUG Found version 71.0
1577745813757 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\ ...
1577745813783 geckodriver::marionette DEBUG Waiting 60s to connect to browser on 127.0.0.1:55184
1577745817392 geckodriver::marionette DEBUG Connection to Marionette established on 127.0.0.1:55184.
1577745817464 webdriver::server DEBUG <- 200 OK {"value":{"sessionId":"925641bf-6c5d-4fe2-a985-02de9b1c7c74","capabilities":"acceptInsecureCerts":true,"browserName":"firefox", ...
More useful information following soon.
Configuration
Useful information about possible configurations following soon.
Github Integration
To ensure your GitHub project always has the latest version of the UDF --
- Open your prefered shell (cmd, powershell, bash, zsh)
- Navigate to your GitHub Autoit repository
- Run
git submodule add https://github.com/Danp2/au3WebDriver
- (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
- HtmlTable2Array UDF by @Chimp
- 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