Description | Features | Getting started | Configuration | Contributing | License | Acknowledgements
The project "autoit-webdriver-boilerplate" can be used as quick entry point for the awesome au3WebDriver project by @Danp2 (and @mlipok). The intention is, give people a easy start with WebDriver for AutoIt.
The different kinds of examples, are (and will be) separated in different branches of the repository. In this overview you basically can see which branch contains which example of WebDriver actions. Some examples and their code could be implemented in a shorter way, but this is made by design and follows a educational purpose.
Branch | Description of the WebDriver actions |
Websites in use | Browser automation flow (steps) |
Test Chrome |
Test Firefox |
Test MSEdge |
---|---|---|---|---|---|---|
main |
- open website - confirm cookie consent dialog - navigate between pages - get table texts |
- https://www.w3schools.com/ | link | 🟢 2024-09-14 v128.0.6613.138 |
🟢 2024-09-14 v130.0.0.2283 |
🟢 2024-09-14 v128.0.2739.79 |
fill-form-take-screenshot |
- open website - navigate to specific area - fill a form - take screenshots |
- https://demoqa.com/ | link | 🟢 2024-09-14 v128.0.6613.138 |
🟢 2024-09-14 v130.0.0.2283 |
🟢 2024-09-14 v128.0.2739.79 |
google-search |
- open website - confirm cookie consent dialog - enter search query - choose specific match by text |
- https://www.google.de/ | link | 🟢 2024-09-15 v128.0.6613.138 |
🔴 2024-09-15 v130.0.0.2283 |
🟢 2024-09-15 v128.0.2739.79 |
multiple-browser-tabs |
- open website - open three more websites in separate browser tabs - do actions (screenshots) for each tabs - navigate through tabs, close tabs |
- https://github.com/Sven-Seyfert/autoit-webdriver-boilerplate - https://www.autoitscript.com/wiki/WebDriver#FAQ - https://autoit.de - https://pkg.go.dev |
link | 🟢 2024-09-15 v128.0.6613.138 |
🟢 2024-09-15 v130.0.0.2283 |
🟢 2024-09-15 v128.0.2739.79 |
In file src/common/webdriver-actions-handler.au3
you can find the following functions which should help you in terms of browser automation actions. These functions are used in the different branches and especially in the _Steps()
function and their subfunctions (entry point of the browser automation).
Area | Function | Purpose |
---|---|---|
Navigation |
||
_NavigateTo($sUrl) | Open the specific URL. | |
_OpenNewTab() | Open new tab and switch to the newly created tab context. | |
_PreviousTab() | Switch to previous (left) tab with context switch. | |
_NextTab($bShouldClose = False) | Switch to next (right) tab with context switch. | |
_CloseTab() | Close current active tab and switch to next (right) tab, with context. | |
_BrowserBack() | Make a browser history back action (backward arrow). | |
_GetCurrentBrowserTabHandle() | (internal) Get the active browser tab handle, to deal with tab navigation. | |
_GetBrowserTabHandles() | (internal) Get handles of all browser tabs, to deal with tab navigation. | |
_SwitchTab($sHandle) | (internal) Switch to tab handle context. | |
Elements |
||
_ExistsElement($sSelector) | Returns the boolean statement about whether an element exists or not. | |
_FindElement($sSelector) | Get element id (UUID) which is necessary to interact with the DOM elements. | |
_FindElements($sSelector) | Get a list of elements (of UUIDs) for further interactions (see "_FindElement"). | |
_ClickElement($sSelector) | Click DOM element by selector. | |
_GetElementText($sSelector) | Get the text of the specific DOM element. | |
_GetElementsTexts($sSelector) | Get a list of texts of the specific DOM elements. | |
_SetElementText($sSelector, $sValue) | Set text to a element like an input field. | |
_WaitForVisible($sSelector) | Wait until a element is visible. | |
Screenshot |
||
_TakeScreenshot() | Create a screenshot of the whole browser window and save this screenshot in the output directory. | |
_TakeElementScreenshot($sSelector) | Create a screenshot of a specific area/element and save this screenshot in the output directory. | |
_CreateScreenshotFile($sResponse) | (internal) Write screenshot data to output directory. | |
iFrames |
||
_EnterIFrame($sSelector) | Move context to an iFrame. | |
_LeaveIFrame() | Leave the context of the previous entered iFrame (move out). |
As assumption, your "browser" of choice which should be automated, have to be installed on your system. Not the "driver" (chromedriver.exe, geckodriver.exe etc.), your browser.
Fork or clone the repository. Alternatively you can download the latest release package. That should be all.
Open the project in your editor/IDE and navigate to folder src
. Open main.au3
, check and adjust the values of function _SetGlobalValues()
and start the program. By default, in case you fulfill the preconditions, the driver should start and should execute some simple webdriver actions like described in the features section (for the specific branch).
Adjust the _Steps()
function content in website-steps-handler.au3
to your requirements and goals, use the prepared wrapper functions in src\common\webdriver-actions-handler.au3
and in as best case, you also want to follow the POM (page object model) structure like prepared too.
Adjust the content/values of function _SetGlobalValues()
in src\main.au3
.
Func _SetGlobalValues(ByRef $mConfig)
$mConfig.Driver = 'firefox' ; chrome|firefox|msedge
$mConfig.IsHeadlessMode = False ; False|True
$mConfig.IgnoreSSLAndCerts = False ; False|True
$mConfig.Delay = 300 ; delay for supporting a robust waiting behavior (page load, clicks, texts etc.)
$mConfig.BrowserWidth = 1600 ; or 1920, etc.
$mConfig.BrowserHeight = 900 ; or 1080, etc.
$mConfig.LocatorStrategy = Null ; will be set in function "_SetLocatorStrategy()"
$mConfig.BrowserMode = 'size' ; fullscreen|maximize|size (default is 'size' which applies .BrowserWidth and .BrowserHeight)
; This is the default installation path, change this in case it's another on your system.
$mConfig.FirefoxBinary = 'C:\Program Files\Mozilla Firefox\firefox.exe'
; Shutdown webdriver on find element error (default is True).
$mConfig.TeardownOnFindElementError = True
; do not change this
$bAlreadyTeardown = False
EndFunc
To be defined [...]
Distributed under the MIT License. See LICENSE for more information.
- Opportunity by GitHub
- Badges by Shields
- Thanks to the authors, maintainers and contributers of the various projects and UDFs
- lib/au3WebDriver/wd_*.au3 by @Danp2 and @mLipok (License: MIT)
- lib/json/*.au3 by @Ward, @Jos and @TheXMan (License: Unlicense)
- lib/winHttp/*.au3 by @trancexx/@dragana-r (License: Apache-2.0)