robotframework-dialogsplus 0.1.1__tar.gz → 0.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- robotframework_dialogsplus-0.2.1/CLAUDE.md +45 -0
- {robotframework_dialogsplus-0.1.1 → robotframework_dialogsplus-0.2.1}/PKG-INFO +10 -4
- {robotframework_dialogsplus-0.1.1 → robotframework_dialogsplus-0.2.1}/README.md +8 -2
- robotframework_dialogsplus-0.2.1/atests/testing.robot +215 -0
- {robotframework_dialogsplus-0.1.1 → robotframework_dialogsplus-0.2.1}/docs/DialogsPlus.html +1 -1
- robotframework_dialogsplus-0.2.1/docs/HowTo.md +150 -0
- {robotframework_dialogsplus-0.1.1 → robotframework_dialogsplus-0.2.1}/pyproject.toml +32 -31
- robotframework_dialogsplus-0.2.1/src/DialogsPlus/dialogsplus.py +382 -0
- {robotframework_dialogsplus-0.1.1 → robotframework_dialogsplus-0.2.1}/src/DialogsPlus/widgets/base.py +31 -7
- {robotframework_dialogsplus-0.1.1 → robotframework_dialogsplus-0.2.1}/src/DialogsPlus/widgets/styling.py +143 -9
- {robotframework_dialogsplus-0.1.1 → robotframework_dialogsplus-0.2.1}/src/DialogsPlus/widgets/wrappers.py +51 -14
- robotframework_dialogsplus-0.2.1/uv.lock +432 -0
- robotframework_dialogsplus-0.1.1/atests/testing.robot +0 -106
- robotframework_dialogsplus-0.1.1/src/DialogsPlus/dialogsplus.py +0 -183
- robotframework_dialogsplus-0.1.1/uv.lock +0 -123
- {robotframework_dialogsplus-0.1.1 → robotframework_dialogsplus-0.2.1}/.gitignore +0 -0
- {robotframework_dialogsplus-0.1.1 → robotframework_dialogsplus-0.2.1}/.python-version +0 -0
- {robotframework_dialogsplus-0.1.1 → robotframework_dialogsplus-0.2.1}/atests/config.yaml +0 -0
- {robotframework_dialogsplus-0.1.1 → robotframework_dialogsplus-0.2.1}/src/DialogsPlus/__init__.py +0 -0
- {robotframework_dialogsplus-0.1.1 → robotframework_dialogsplus-0.2.1}/src/DialogsPlus/py.typed +0 -0
- {robotframework_dialogsplus-0.1.1 → robotframework_dialogsplus-0.2.1}/src/DialogsPlus/utils/config.py +0 -0
- {robotframework_dialogsplus-0.1.1 → robotframework_dialogsplus-0.2.1}/src/DialogsPlus/widgets/assets/robot.ico +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Project
|
|
6
|
+
|
|
7
|
+
`robotframework-dialogsplus` — a Robot Framework library providing modern, styled GUI dialogs (built on `customtkinter`) as a drop-in enhancement to Robot Framework's built-in `Dialogs` library. It only works with a real desktop (GUI dialogs require an interactive display), so it cannot run in headless CI/CD environments.
|
|
8
|
+
|
|
9
|
+
## Commands
|
|
10
|
+
|
|
11
|
+
Package management is via `uv` (see `uv.lock`).
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
uv sync # install dependencies into .venv
|
|
15
|
+
uv run robot atests/ # run the acceptance tests (opens real GUI dialogs — requires manual interaction)
|
|
16
|
+
uv run robot atests/testing.robot -t "Get Confirmation Returns Boolean" # run a single test case by name
|
|
17
|
+
uv run robotidy src atests # format Robot Framework files (robotframework-tidy, a dev dependency)
|
|
18
|
+
uv run ruff check . # lint Python source
|
|
19
|
+
uv build # build the wheel/sdist (hatchling backend)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
There is no Python unit test suite — correctness is verified only through the `.robot` acceptance tests in `atests/`, which pop up real dialog windows and require a human (or scripted UI automation) to click through them. They cannot run in headless/CI environments.
|
|
23
|
+
|
|
24
|
+
Keyword documentation (`docs/DialogsPlus.html`) is generated from the library's docstrings via Robot Framework's Libdoc, e.g.:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
uv run python -m robot.libdoc src/DialogsPlus/dialogsplus.py docs/DialogsPlus.html
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Architecture
|
|
31
|
+
|
|
32
|
+
The library follows a three-layer structure, all under `src/DialogsPlus/`:
|
|
33
|
+
|
|
34
|
+
1. **`dialogsplus.py`** — the Robot Framework library class (`DialogsPlus`, `ROBOT_LIBRARY_SCOPE = 'SUITE'`). Each public method is decorated `@keyword` and becomes a Robot Framework keyword (e.g. `get_value_from_user_input` → `Get Value From User Input`). This layer only handles keyword argument parsing/validation, dynamic size calculations (e.g. dialog height/width scaled by number of fields/options in `get_multi_value` and `select_options_with_checkboxes`), and delegates the actual dialog logic to `widgets/wrappers.py`. The class constructor optionally loads a `DialogConfig` from a YAML file (`Library DialogsPlus config=path/to/config.yaml`).
|
|
35
|
+
|
|
36
|
+
2. **`widgets/wrappers.py`** — one static-method "runner" class per keyword (e.g. `GetValueFromUserDialog`, `MultiValueInput`, `ChooseFromFileDialog`). Each wrapper instantiates the corresponding dialog class from `widgets/styling.py`, calls `.show()`, logs via `robot.api.logger`, and translates the raw dialog result dict into the keyword's return value (e.g. mapping a `status` of `"yes"/"no"/"cancel"` to `True/False/None`). `ExecuteManualStepDialog` also raises `robot.errors.ExecutionFailed` when the user fails a manual step, prompting for a failure reason via a nested `InputDialog`.
|
|
37
|
+
|
|
38
|
+
3. **`widgets/styling.py`** — the actual `customtkinter`-based dialog implementations (`InputDialog`, `ManualStepDialog`, `CountdownDialog`, `ConfirmationDialog`, `MultiValueInputDialog`, `FileDialog`, `FolderDialog`, `CheckboxConfirmationDialog`, `MultiCheckboxDialog`, `PauseDialog`). Each subclasses `BaseDialog` from `widgets/base.py` and implements `build_ui(app)`, populating `self.result` and calling `app.quit()` on submit/cancel.
|
|
39
|
+
|
|
40
|
+
Supporting modules:
|
|
41
|
+
|
|
42
|
+
- **`widgets/base.py`** — `BaseDialogRunner` creates/centers/tears down the `ctk.CTk()` app window (sets appearance mode/theme once globally on first use, sets the window icon from `widgets/assets/robot.ico`, and runs `app.mainloop()`), and `BaseDialog` provides the styled widget factory methods (`create_button`, `create_label`, `create_entry`, `create_frame`, `create_progress_bar`, `create_checkbox`) that all dialogs use, plus the generic `show()` → `build_ui()` → return `self.result` flow.
|
|
43
|
+
- **`utils/config.py`** — `DialogConfig` holds all visual/layout settings (theme, fonts, colors, sizes, spacing) with defaults, and `DialogConfig.from_yaml(path)` loads overrides from a user-supplied YAML config file (see `atests/config.yaml` for the shape).
|
|
44
|
+
|
|
45
|
+
When adding a new keyword: add a `@keyword`-decorated method to `dialogsplus.py`, a runner class (or static method) in `wrappers.py`, and a new `BaseDialog` subclass in `styling.py` — following the existing pattern rather than putting UI logic directly in `dialogsplus.py`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: robotframework-dialogsplus
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: A drop-in enhancement for Robot Framework's Dialogs library with modern UI and extended user interaction keywords.
|
|
5
5
|
Author-email: Alpha-Centauri-00 <Alpha@Centauri.c0m>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -31,12 +31,18 @@ A drop-in enhancement for Robot Framework's Dialogs library with modern UI and e
|
|
|
31
31
|
- Supports dynamic sizing based on input fields or options
|
|
32
32
|
|
|
33
33
|
---
|
|
34
|
+
## Installation
|
|
34
35
|
|
|
35
|
-
|
|
36
|
+
```bach
|
|
37
|
+
pip install robotframework-dialogsplus
|
|
38
|
+
```
|
|
36
39
|
|
|
37
|
-
👉 View DialogsPlus Keyword [Docs](https://alpha-centauri-00.github.io/DialogsPlus/DialogsPlus.html)
|
|
38
40
|
|
|
41
|
+
## 📚 Keyword Documentation
|
|
39
42
|
|
|
43
|
+
👉 View DialogsPlus Keyword [Docs](https://alpha-centauri-00.github.io/DialogsPlus/DialogsPlus.html)
|
|
40
44
|
|
|
45
|
+
👉 More Example of [HowTo](https://github.com/Alpha-Centauri-00/DialogsPlus/blob/main/docs/HowTo.md)
|
|
46
|
+
|
|
41
47
|
|
|
42
48
|
Pull requests are welcome! More info coming soon.
|
|
@@ -19,12 +19,18 @@ A drop-in enhancement for Robot Framework's Dialogs library with modern UI and e
|
|
|
19
19
|
- Supports dynamic sizing based on input fields or options
|
|
20
20
|
|
|
21
21
|
---
|
|
22
|
+
## Installation
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
```bach
|
|
25
|
+
pip install robotframework-dialogsplus
|
|
26
|
+
```
|
|
24
27
|
|
|
25
|
-
👉 View DialogsPlus Keyword [Docs](https://alpha-centauri-00.github.io/DialogsPlus/DialogsPlus.html)
|
|
26
28
|
|
|
29
|
+
## 📚 Keyword Documentation
|
|
27
30
|
|
|
31
|
+
👉 View DialogsPlus Keyword [Docs](https://alpha-centauri-00.github.io/DialogsPlus/DialogsPlus.html)
|
|
28
32
|
|
|
33
|
+
👉 More Example of [HowTo](https://github.com/Alpha-Centauri-00/DialogsPlus/blob/main/docs/HowTo.md)
|
|
34
|
+
|
|
29
35
|
|
|
30
36
|
Pull requests are welcome! More info coming soon.
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
*** Settings ***
|
|
2
|
+
Library DialogsPlus #config=D:/robotframework-dialogsplus/atests/config.yaml
|
|
3
|
+
Library OperatingSystem
|
|
4
|
+
|
|
5
|
+
# Suite Setup Set Log Level level=TRACE
|
|
6
|
+
# Test Setup Log Test Case Name
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
*** Keywords ***
|
|
10
|
+
Log Test Case Name
|
|
11
|
+
[Tags] robot:flatten
|
|
12
|
+
Log <p style="background-color: #06bdb1; font-weight: bold; display: inline-block; padding: 4px;">*** Running Test: ${TEST NAME} ***</p> html=${True}
|
|
13
|
+
|
|
14
|
+
log Hello
|
|
15
|
+
Log Hello level=WARN
|
|
16
|
+
|
|
17
|
+
*** Variables ***
|
|
18
|
+
|
|
19
|
+
@{fields_val} username password email phone
|
|
20
|
+
@{fields} username password
|
|
21
|
+
&{default_val} username=admin password=P@55 phone=1234567
|
|
22
|
+
&{default} username=user1 password=P@55
|
|
23
|
+
|
|
24
|
+
*** Test Cases ***
|
|
25
|
+
|
|
26
|
+
Get Value From User Default
|
|
27
|
+
${result} Get Value From User Input
|
|
28
|
+
... prompt=Enter your name:
|
|
29
|
+
... default=Robot framework
|
|
30
|
+
|
|
31
|
+
Should Be Equal ${result} Robot framework
|
|
32
|
+
|
|
33
|
+
Run Manual Steps Executes
|
|
34
|
+
VAR @{steps}
|
|
35
|
+
... Open the app
|
|
36
|
+
... Click Start button
|
|
37
|
+
... Verify status
|
|
38
|
+
|
|
39
|
+
Run Manual Steps ${steps}
|
|
40
|
+
Log Manual steps executed successfully
|
|
41
|
+
|
|
42
|
+
Run Manual Steps Executes With Plain Args
|
|
43
|
+
Run Manual Steps
|
|
44
|
+
... open github
|
|
45
|
+
... add username
|
|
46
|
+
... add password
|
|
47
|
+
... press login
|
|
48
|
+
|
|
49
|
+
Log Manual steps executed successfully
|
|
50
|
+
|
|
51
|
+
Count Down Runs
|
|
52
|
+
Count Down 3
|
|
53
|
+
Log Countdown executed for 3 seconds
|
|
54
|
+
|
|
55
|
+
Get Confirmation Returns Boolean
|
|
56
|
+
${result} Get Confirmation Are you sure?
|
|
57
|
+
Should Be True isinstance(${result}, bool)
|
|
58
|
+
|
|
59
|
+
Get Multi Value
|
|
60
|
+
${result} Get Multi Value ${fields} default=${default}
|
|
61
|
+
Should Be Equal ${result}[username] user1
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
Get Multi Value Multiple Fields
|
|
65
|
+
${result} Get Multi Value ${fields_val} default=${default_val}
|
|
66
|
+
Should Be Equal ${result}[password] P@55
|
|
67
|
+
Should Be Equal ${result}[phone] 1234567
|
|
68
|
+
|
|
69
|
+
Choose Single XML File
|
|
70
|
+
${XML_FILETYPES} Evaluate [("xml files", "*.xml")]
|
|
71
|
+
${result}= Choose File
|
|
72
|
+
... message=Select Single XML File
|
|
73
|
+
... filetypes=${XML_FILETYPES}
|
|
74
|
+
|
|
75
|
+
Should Contain ${result} .xml
|
|
76
|
+
|
|
77
|
+
Choose Multiple HTML Files
|
|
78
|
+
${HTML_FILETYPES} Evaluate [("HTML", "*.html")]
|
|
79
|
+
${result}= Choose File
|
|
80
|
+
... message=Select Multiple HTML Files
|
|
81
|
+
... filetypes=${HTML_FILETYPES} multiple=True
|
|
82
|
+
|
|
83
|
+
Should Contain ${result}[0] .html
|
|
84
|
+
|
|
85
|
+
Choose Folder Test
|
|
86
|
+
${result}= Choose Folder message=Select Any Directory
|
|
87
|
+
Directory Should Exist ${result}
|
|
88
|
+
|
|
89
|
+
Single Ceckbox Test
|
|
90
|
+
${r} Confirm With Checkbox
|
|
91
|
+
... message=Do you accept the terms?
|
|
92
|
+
... checkbox_text=I accept, no matter what!
|
|
93
|
+
|
|
94
|
+
Should Be True ${r}
|
|
95
|
+
|
|
96
|
+
Select Many Checkbox Test
|
|
97
|
+
${r} Select Options With Checkboxes
|
|
98
|
+
... message=Select as much as you want
|
|
99
|
+
... options=${fields_val}
|
|
100
|
+
|
|
101
|
+
Should Not Be True ${r}[username]
|
|
102
|
+
Should Not Be True ${r}[password]
|
|
103
|
+
Should Not Be True ${r}[email]
|
|
104
|
+
Should Not Be True ${r}[phone]
|
|
105
|
+
|
|
106
|
+
Select Many Checkbox With Defaults Test
|
|
107
|
+
@{Contacts} Create List Email SMS Phone Slack Discord
|
|
108
|
+
@{Selected_Defaults} Create List Email SMS
|
|
109
|
+
${selected}= Select Options With Checkboxes
|
|
110
|
+
... message=Choose your preferences
|
|
111
|
+
... options=${Contacts}
|
|
112
|
+
... defaults=@{Selected_Defaults} # Default Selected!
|
|
113
|
+
|
|
114
|
+
Should Be True ${selected}[Email]
|
|
115
|
+
Should Be True ${selected}[SMS]
|
|
116
|
+
Should Not Be True ${selected}[Phone]
|
|
117
|
+
Should Not Be True ${selected}[Slack]
|
|
118
|
+
Should Not Be True ${selected}[Discord]
|
|
119
|
+
|
|
120
|
+
Pause The Test
|
|
121
|
+
Pause Test Execution message=Check If System Is Running!
|
|
122
|
+
|
|
123
|
+
Pause The Test With Command
|
|
124
|
+
Pause Test Execution message=Check If System Is Running! command=log Hello
|
|
125
|
+
|
|
126
|
+
Pause The Test With Command That Opens A Dialog
|
|
127
|
+
@{args} Create List 2
|
|
128
|
+
Pause Test Execution
|
|
129
|
+
... message=Check If System Is Running!
|
|
130
|
+
... command=Count Down
|
|
131
|
+
... command_args=${args}
|
|
132
|
+
|
|
133
|
+
Pause The Test With Command That Fails
|
|
134
|
+
TRY
|
|
135
|
+
Pause Test Execution message=Click Run, then Continue command=Not Exist Keyword
|
|
136
|
+
EXCEPT AS ${error}
|
|
137
|
+
Log Caught expected failure: ${error}
|
|
138
|
+
END
|
|
139
|
+
|
|
140
|
+
Create Dialog With Text Box And Checkbox
|
|
141
|
+
Create Dialog title=Login Form
|
|
142
|
+
Add Text Box name=username label=Username default=admin
|
|
143
|
+
Add Checkbox name=remember_me label=Remember Me
|
|
144
|
+
Add Button text=OK
|
|
145
|
+
Add Button text=Cancel
|
|
146
|
+
${result} Show Dialog
|
|
147
|
+
Log Button clicked: ${result}[button]
|
|
148
|
+
Log Username: ${result}[username]
|
|
149
|
+
Log Remember me: ${result}[remember_me]
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
Create Dialog With Side Command Button
|
|
153
|
+
Create Dialog title=Diagnostics
|
|
154
|
+
Add Label text=Run diagnostics before continuing if you like.
|
|
155
|
+
Add Button text=Run Diagnostics command=log Hello closes_dialog=False
|
|
156
|
+
Add Button text=OK
|
|
157
|
+
${result} Show Dialog
|
|
158
|
+
Should Be Equal ${result}[button] OK
|
|
159
|
+
|
|
160
|
+
Add Text Box Fails Without Create Dialog First
|
|
161
|
+
TRY
|
|
162
|
+
Add Text Box name=orphan
|
|
163
|
+
EXCEPT AS ${error}
|
|
164
|
+
Log Caught expected failure: ${error}
|
|
165
|
+
END
|
|
166
|
+
|
|
167
|
+
Create Dialog Fails Without A Closing Button
|
|
168
|
+
Create Dialog title=No Closing Button
|
|
169
|
+
Add Label text=This has no OK/Cancel button
|
|
170
|
+
TRY
|
|
171
|
+
Show Dialog
|
|
172
|
+
EXCEPT AS ${error}
|
|
173
|
+
Log Caught expected failure: ${error}
|
|
174
|
+
END
|
|
175
|
+
|
|
176
|
+
Create Dialog With Masked Text Box
|
|
177
|
+
Create Dialog title=Login Form
|
|
178
|
+
Add Text Box name=username label=Username default=admin
|
|
179
|
+
Add Text Box name=password label=Password mask=True
|
|
180
|
+
Add Button text=OK
|
|
181
|
+
${result} Show Dialog
|
|
182
|
+
|
|
183
|
+
Create Dialog With Radio Group
|
|
184
|
+
Create Dialog title=Test Result
|
|
185
|
+
Add Radio Group name=verdict label=Verdict options=Pass|Fail|Blocked default=Pass
|
|
186
|
+
Add Button text=OK
|
|
187
|
+
${result} Show Dialog
|
|
188
|
+
Should Contain ${{['Pass', 'Fail', 'Blocked']}} ${result}[verdict]
|
|
189
|
+
Log Verdict selected: ${result}[verdict]
|
|
190
|
+
|
|
191
|
+
Add Radio Group Fail and Pass
|
|
192
|
+
Create Dialog title=Verdict
|
|
193
|
+
Add Radio Group name=verdict options=Pass|Fail default=Pass
|
|
194
|
+
Add Button text=OK
|
|
195
|
+
${result} Show Dialog
|
|
196
|
+
Should Be Equal ${result}[verdict] Pass
|
|
197
|
+
|
|
198
|
+
Create Dialog With Dropdown
|
|
199
|
+
Create Dialog title=Browser Selection
|
|
200
|
+
Add Dropdown name=browser label=Browser options=Chrome|Firefox|Edge default=Firefox
|
|
201
|
+
Add Button text=OK
|
|
202
|
+
${result} Show Dialog
|
|
203
|
+
Log Browser selected: ${result}[browser]
|
|
204
|
+
|
|
205
|
+
Add Dropdown Fails With Bad Default
|
|
206
|
+
Create Dialog title=Bad Dropdown Default
|
|
207
|
+
TRY
|
|
208
|
+
Add Dropdown name=browser options=Chrome|Firefox default=Safari
|
|
209
|
+
EXCEPT AS ${error}
|
|
210
|
+
Log Caught expected failure: ${error}
|
|
211
|
+
END
|
|
212
|
+
Add Dropdown name=browser options=Chrome|Firefox default=Chrome
|
|
213
|
+
Add Button text=OK
|
|
214
|
+
${result} Show Dialog
|
|
215
|
+
Should Be Equal ${result}[browser] Chrome
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
9
9
|
<meta name="Generator" content>
|
|
10
10
|
<script type="text/javascript">
|
|
11
|
-
libdoc = {"specversion": 3, "name": "DialogsPlus", "doc": "<p>DialogsPlus is a modern, customizable drop-in enhancement for Robot Framework\u2019s Dialogs library, built on top of customtkinter.</p>\n<p>This library extends standard dialog capabilities with stylish and user-friendly GUI dialogs, supporting customization of colors, fonts, and sizes via an external config.yaml file.</p>\n<p>Features:</p>\n<ul>\n<li>Easy-to-use dialogs for interactive test runs.</li>\n<li>Full GUI interface using customtkinter.</li>\n<li>Customizable appearance (colors, fonts, sizes, etc.) through config.yaml.</li>\n<li>Dynamic sizing based on user input or options.</li>\n<li>Drop-in replacement for Robot Framework\u2019s standard Dialogs library.</li>\n</ul>\n<p>Note:</p>\n<ul>\n<li>Not supported in headless environments (e.g., CI/CD pipelines like Jenkins or GitHub Actions).</li>\n</ul>\n<p>DialogsPlus is ideal for enhancing user interactions in Robot Framework tests with modern UI elements and extended keyword support.</p>", "version": "", "generated": "2025-10-19T13:09:15+00:00", "type": "LIBRARY", "scope": "TEST", "docFormat": "HTML", "source": "D:\\robotframework-dialogsplus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 21, "tags": [], "inits": [{"name": "__init__", "args": [{"name": "config", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "config: str | None = None"}], "returnType": null, "doc": "<p>Initialize DialogsPlus library with optional YAML config file.</p>", "shortdoc": "Initialize DialogsPlus library with optional YAML config file.", "tags": [], "source": "D:\\robotframework-dialogsplus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 40}], "keywords": [{"name": "Choose File", "args": [{"name": "message", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "message: str = "}, {"name": "filetypes", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "List", "typedoc": "list", "nested": [{"name": "tuple", "typedoc": "tuple", "nested": [], "union": false}], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "filetypes: List[tuple] | None = None"}, {"name": "multiple", "type": {"name": "bool", "typedoc": "boolean", "nested": [], "union": false}, "defaultValue": "False", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "multiple: bool = False"}], "returnType": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "List", "typedoc": "list", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "doc": "<p>Opens file picker dialog.</p>\n<p>Arguments:</p>\n<ul>\n<li>message: Instruction text</li>\n<li>filetypes: List of (description, pattern) tuples, e.g. [(\"Text files\", \"*.txt\")]</li>\n<li>multiple: Allow selecting multiple files</li>\n</ul>\n<p>Returns file path string, list of paths if multiple=True, or None if cancelled.</p>", "shortdoc": "Opens file picker dialog.", "tags": [], "source": "D:\\robotframework-dialogsplus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 111}, {"name": "Choose Folder", "args": [{"name": "message", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "message: str"}], "returnType": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "doc": "<p>Opens folder picker dialog.</p>\n<p>Arguments:</p>\n<ul>\n<li>message: Instruction text</li>\n</ul>\n<p>Returns folder path string or None if cancelled.</p>", "shortdoc": "Opens folder picker dialog.", "tags": [], "source": "D:\\robotframework-dialogsplus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 124}, {"name": "Confirm With Checkbox", "args": [{"name": "message", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "message: str"}, {"name": "checkbox_text", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": "I agree", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "checkbox_text: str = I agree"}], "returnType": {"name": "bool", "typedoc": "boolean", "nested": [], "union": false}, "doc": "<p>Shows confirmation dialog with checkbox.</p>\n<p>Arguments:</p>\n<ul>\n<li>message: Prompt text</li>\n<li>checkbox_text: Label for checkbox</li>\n</ul>\n<p>Returns True if checkbox was checked, False otherwise.</p>", "shortdoc": "Shows confirmation dialog with checkbox.", "tags": [], "source": "D:\\robotframework-dialogsplus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 135}, {"name": "Count Down", "args": [{"name": "seconds", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "int", "typedoc": "integer", "nested": [], "union": false}, {"name": "str", "typedoc": "string", "nested": [], "union": false}], "union": true}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "seconds: int | str"}], "returnType": null, "doc": "<p>Shows countdown timer dialog.</p>\n<p>Arguments:</p>\n<ul>\n<li>seconds: Duration in seconds</li>\n</ul>\n<p>Dialog closes automatically when timer reaches zero.</p>", "shortdoc": "Shows countdown timer dialog.", "tags": [], "source": "D:\\robotframework-dialogsplus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 71}, {"name": "Get Confirmation", "args": [{"name": "message", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "message: str"}], "returnType": {"name": "Union", "typedoc": null, "nested": [{"name": "bool", "typedoc": "boolean", "nested": [], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "doc": "<p>Shows Yes/No/Cancel confirmation dialog.</p>\n<p>Arguments:</p>\n<ul>\n<li>message: Question or prompt text</li>\n</ul>\n<p>Returns True for Yes, False for No, None for Cancel.</p>", "shortdoc": "Shows Yes/No/Cancel confirmation dialog.", "tags": [], "source": "D:\\robotframework-dialogsplus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 82}, {"name": "Get Multi Value", "args": [{"name": "fields", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "List", "typedoc": "list", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}], "union": false}], "union": true}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "fields: str | List[str]"}, {"name": "default", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "Dict", "typedoc": "dictionary", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "str", "typedoc": "string", "nested": [], "union": false}], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "default: Dict[str, str] | None = None"}], "returnType": {"name": "Union", "typedoc": null, "nested": [{"name": "Dict", "typedoc": "dictionary", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "str", "typedoc": "string", "nested": [], "union": false}], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "doc": "<p>Prompts user for multiple input values in one dialog.</p>\n<p>Arguments:</p>\n<ul>\n<li>fields: List of field names or single field</li>\n<li>default: Dictionary of default values per field</li>\n</ul>\n<p>Returns dictionary with field names as keys and user inputs as values, or None if cancelled.</p>", "shortdoc": "Prompts user for multiple input values in one dialog.", "tags": [], "source": "D:\\robotframework-dialogsplus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 93}, {"name": "Get Value From User Input", "args": [{"name": "prompt", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": "Enter value:", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "prompt: str = Enter value:"}, {"name": "default", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "default: str = "}], "returnType": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "doc": "<p>Prompts user for text input via dialog.</p>\n<p>Arguments:</p>\n<ul>\n<li>prompt: Text displayed above input field</li>\n<li>default: Pre-filled value</li>\n</ul>\n<p>Returns string input or None if cancelled.</p>", "shortdoc": "Prompts user for text input via dialog.", "tags": [], "source": "D:\\robotframework-dialogsplus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 48}, {"name": "Pause Test Execution", "args": [{"name": "message", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": "Test execution paused", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "message: str = Test execution paused"}], "returnType": null, "doc": "<p>Pauses test execution until user clicks Continue.</p>\n<p>Arguments:</p>\n<ul>\n<li>message: Text displayed in dialog</li>\n</ul>\n<p>Test resumes when user clicks Continue button.</p>", "shortdoc": "Pauses test execution until user clicks Continue.", "tags": [], "source": "D:\\robotframework-dialogsplus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 175}, {"name": "Run Manual Steps", "args": [{"name": "steps", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "List", "typedoc": "list", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}], "union": false}], "union": true}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "steps: str | List[str]"}], "returnType": null, "doc": "<p>Displays manual test steps with Pass/Fail buttons.</p>\n<p>Arguments:</p>\n<ul>\n<li>steps: Single step string or list of step strings</li>\n</ul>\n<p>Raises ExecutionFailed if user clicks Fail button.</p>", "shortdoc": "Displays manual test steps with Pass/Fail buttons.", "tags": [], "source": "D:\\robotframework-dialogsplus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 60}, {"name": "Select Options With Checkboxes", "args": [{"name": "message", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "message: str"}, {"name": "options", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "List", "typedoc": "list", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}], "union": false}], "union": true}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "options: str | List[str]"}, {"name": "defaults", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "List", "typedoc": "list", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "defaults: List[str] | None = None"}], "returnType": {"name": "Dict", "typedoc": "dictionary", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "bool", "typedoc": "boolean", "nested": [], "union": false}], "union": false}, "doc": "<p>Shows multiple checkboxes for selection.</p>\n<p>Arguments:</p>\n<ul>\n<li>message: Instruction text</li>\n<li>options: List of options or pipe-separated string</li>\n<li>defaults: List of pre-selected option names</li>\n</ul>\n<p>Returns dictionary with option names as keys and True/False as values.</p>", "shortdoc": "Shows multiple checkboxes for selection.", "tags": [], "source": "D:\\robotframework-dialogsplus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 147}], "typedocs": [{"type": "Standard", "name": "boolean", "doc": "<p>Strings <code>TRUE</code>, <code>YES</code>, <code>ON</code> and <code>1</code> are converted to Boolean <code>True</code>, the empty string as well as strings <code>FALSE</code>, <code>NO</code>, <code>OFF</code> and <code>0</code> are converted to Boolean <code>False</code>, and the string <code>NONE</code> is converted to the Python <code>None</code> object. Other strings and other accepted values are passed as-is, allowing keywords to handle them specially if needed. All string comparisons are case-insensitive.</p>\n<p>Examples: <code>TRUE</code> (converted to <code>True</code>), <code>off</code> (converted to <code>False</code>), <code>example</code> (used as-is)</p>", "usages": ["Choose File", "Confirm With Checkbox", "Get Confirmation", "Select Options With Checkboxes"], "accepts": ["string", "integer", "float", "None"]}, {"type": "Standard", "name": "dictionary", "doc": "<p>Strings must be Python <a href=\"https://docs.python.org/library/stdtypes.html#dict\">dictionary</a> literals. They are converted to actual dictionaries using the <a href=\"https://docs.python.org/library/ast.html#ast.literal_eval\">ast.literal_eval</a> function. They can contain any values <code>ast.literal_eval</code> supports, including dictionaries and other containers.</p>\n<p>If the type has nested types like <code>dict[str, int]</code>, items are converted to those types automatically. This in new in Robot Framework 6.0.</p>\n<p>Examples: <code>{'a': 1, 'b': 2}</code>, <code>{'key': 1, 'nested': {'key': 2}}</code></p>", "usages": ["Get Multi Value", "Select Options With Checkboxes"], "accepts": ["string", "Mapping"]}, {"type": "Standard", "name": "integer", "doc": "<p>Conversion is done using Python's <a href=\"https://docs.python.org/library/functions.html#int\">int</a> built-in function. Floating point numbers are accepted only if they can be represented as integers exactly. For example, <code>1.0</code> is accepted and <code>1.1</code> is not.</p>\n<p>Starting from RF 4.1, it is possible to use hexadecimal, octal and binary numbers by prefixing values with <code>0x</code>, <code>0o</code> and <code>0b</code>, respectively.</p>\n<p>Starting from RF 4.1, spaces and underscores can be used as visual separators for digit grouping purposes.</p>\n<p>Examples: <code>42</code>, <code>-1</code>, <code>0b1010</code>, <code>10 000 000</code>, <code>0xBAD_C0FFEE</code></p>", "usages": ["Count Down"], "accepts": ["string", "float"]}, {"type": "Standard", "name": "list", "doc": "<p>Strings must be Python <a href=\"https://docs.python.org/library/stdtypes.html#list\">list</a> literals. They are converted to actual lists using the <a href=\"https://docs.python.org/library/ast.html#ast.literal_eval\">ast.literal_eval</a> function. They can contain any values <code>ast.literal_eval</code> supports, including lists and other containers.</p>\n<p>If the type has nested types like <code>list[int]</code>, items are converted to those types automatically. This in new in Robot Framework 6.0.</p>\n<p>Examples: <code>['one', 'two']</code>, <code>[('one', 1), ('two', 2)]</code></p>", "usages": ["Choose File", "Get Multi Value", "Run Manual Steps", "Select Options With Checkboxes"], "accepts": ["string", "Sequence"]}, {"type": "Standard", "name": "None", "doc": "<p>String <code>NONE</code> (case-insensitive) is converted to Python <code>None</code> object. Other values cause an error.</p>", "usages": ["__init__", "Choose File", "Choose Folder", "Get Confirmation", "Get Multi Value", "Get Value From User Input", "Select Options With Checkboxes"], "accepts": ["string"]}, {"type": "Standard", "name": "string", "doc": "<p>All arguments are converted to Unicode strings.</p>", "usages": ["__init__", "Choose File", "Choose Folder", "Confirm With Checkbox", "Count Down", "Get Confirmation", "Get Multi Value", "Get Value From User Input", "Pause Test Execution", "Run Manual Steps", "Select Options With Checkboxes"], "accepts": ["Any"]}, {"type": "Standard", "name": "tuple", "doc": "<p>Strings must be Python <a href=\"https://docs.python.org/library/stdtypes.html#tuple\">tuple</a> literals. They are converted to actual tuples using the <a href=\"https://docs.python.org/library/ast.html#ast.literal_eval\">ast.literal_eval</a> function. They can contain any values <code>ast.literal_eval</code> supports, including tuples and other containers.</p>\n<p>If the type has nested types like <code>tuple[str, int, int]</code>, items are converted to those types automatically. This in new in Robot Framework 6.0.</p>\n<p>Examples: <code>('one', 'two')</code>, <code>(('one', 1), ('two', 2))</code></p>", "usages": ["Choose File"], "accepts": ["string", "Sequence"]}]}
|
|
11
|
+
libdoc = {"specversion": 3, "name": "DialogsPlus", "doc": "<p>DialogsPlus is a modern, customizable drop-in enhancement for Robot Framework\u2019s Dialogs library, built on top of customtkinter.</p>\n<p>This library extends standard dialog capabilities with stylish and user-friendly GUI dialogs, supporting customization of colors, fonts, and sizes via an external config.yaml file.</p>\n<p>Features:</p>\n<ul>\n<li>Easy-to-use dialogs for interactive test runs.</li>\n<li>Full GUI interface using customtkinter.</li>\n<li>Customizable appearance (colors, fonts, sizes, etc.) through config.yaml.</li>\n<li>Dynamic sizing based on user input or options.</li>\n<li>Drop-in replacement for Robot Framework\u2019s standard Dialogs library.</li>\n</ul>\n<p>Note:</p>\n<ul>\n<li>Not supported in headless environments (e.g., CI/CD pipelines like Jenkins or GitHub Actions).</li>\n</ul>\n<p>DialogsPlus is ideal for enhancing user interactions in Robot Framework tests with modern UI elements and extended keyword support.</p>", "version": "", "generated": "2026-08-23T15:45:04+00:00", "type": "LIBRARY", "scope": "TEST", "docFormat": "HTML", "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 24, "tags": [], "inits": [{"name": "__init__", "args": [{"name": "config", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "config: str | None = None"}], "returnType": null, "doc": "<p>Initialize DialogsPlus library with optional YAML config file.</p>", "shortdoc": "Initialize DialogsPlus library with optional YAML config file.", "tags": [], "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 43}], "keywords": [{"name": "Add Button", "args": [{"name": "text", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "text: str"}, {"name": "command", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "command: str | None = None"}, {"name": "command_args", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "List", "typedoc": "list", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "command_args: List[str] | None = None"}, {"name": "closes_dialog", "type": {"name": "bool", "typedoc": "boolean", "nested": [], "union": false}, "defaultValue": "True", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "closes_dialog: bool = True"}], "returnType": null, "doc": "<p>Adds a button to the dialog being built with Create Dialog.</p>\n<p>Arguments:</p>\n<ul>\n<li>text: Button label, and the value recorded under result['button'] if it closes the dialog</li>\n<li>command: Optional keyword name to run when clicked, via Robot Framework's Run Keyword - must be a keyword already available in the running suite</li>\n<li>command_args: Optional list of arguments passed to that keyword</li>\n<li>closes_dialog: If True (default), clicking this button runs its command (if any), collects the current field values, and closes the dialog. If False, the button only runs its command and the dialog stays open - e.g. for a \"Run Diagnostics\" action next to OK/Cancel.</li>\n</ul>\n<p>Raises ExecutionFailed if called before Create Dialog.</p>", "shortdoc": "Adds a button to the dialog being built with Create Dialog.", "tags": [], "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 334}, {"name": "Add Checkbox", "args": [{"name": "name", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name: str"}, {"name": "label", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label: str | None = None"}, {"name": "default", "type": {"name": "bool", "typedoc": "boolean", "nested": [], "union": false}, "defaultValue": "False", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "default: bool = False"}], "returnType": null, "doc": "<p>Adds a checkbox to the dialog being built with Create Dialog.</p>\n<p>Arguments:</p>\n<ul>\n<li>name: Key used for this field's True/False value in Show Dialog's result</li>\n<li>label: Text shown next to the checkbox (defaults to name)</li>\n<li>default: Whether the checkbox starts checked</li>\n</ul>\n<p>Raises ExecutionFailed if called before Create Dialog, or if name was already used.</p>", "shortdoc": "Adds a checkbox to the dialog being built with Create Dialog.", "tags": [], "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 258}, {"name": "Add Dropdown", "args": [{"name": "name", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name: str"}, {"name": "options", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "List", "typedoc": "list", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}], "union": false}], "union": true}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "options: str | List[str]"}, {"name": "label", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label: str | None = None"}, {"name": "default", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "default: str | None = None"}], "returnType": null, "doc": "<p>Adds a dropdown (single choice) to the dialog being built with Create Dialog.</p>\n<p>Arguments:</p>\n<ul>\n<li>name: Key used for this field's selected value in Show Dialog's result</li>\n<li>options: List of choices, or a pipe-separated string (e.g. 'Chrome|Firefox|Edge')</li>\n<li>label: Text shown next to the dropdown (defaults to name)</li>\n<li>default: Which option starts selected (defaults to the first option)</li>\n</ul>\n<p>Raises ExecutionFailed if called before Create Dialog, if name was already used, if options is empty, or if default isn't one of the options.</p>", "shortdoc": "Adds a dropdown (single choice) to the dialog being built with Create Dialog.", "tags": [], "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 297}, {"name": "Add Label", "args": [{"name": "text", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "text: str"}], "returnType": null, "doc": "<p>Adds a plain text line to the dialog being built with Create Dialog.</p>\n<p>Arguments:</p>\n<ul>\n<li>text: Text to display</li>\n</ul>\n<p>Purely visual - not included in Show Dialog's result. Raises ExecutionFailed if called before Create Dialog.</p>", "shortdoc": "Adds a plain text line to the dialog being built with Create Dialog.", "tags": [], "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 321}, {"name": "Add Radio Group", "args": [{"name": "name", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name: str"}, {"name": "options", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "List", "typedoc": "list", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}], "union": false}], "union": true}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "options: str | List[str]"}, {"name": "label", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label: str | None = None"}, {"name": "default", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "default: str | None = None"}], "returnType": null, "doc": "<p>Adds a group of mutually-exclusive radio buttons to the dialog being built with Create Dialog.</p>\n<p>Arguments:</p>\n<ul>\n<li>name: Key used for this field's selected value in Show Dialog's result</li>\n<li>options: List of choices, or a pipe-separated string (e.g. 'Pass|Fail|Blocked')</li>\n<li>label: Text shown above the group (defaults to name)</li>\n<li>default: Which option starts selected (defaults to the first option)</li>\n</ul>\n<p>Raises ExecutionFailed if called before Create Dialog, if name was already used, if options is empty, or if default isn't one of the options.</p>", "shortdoc": "Adds a group of mutually-exclusive radio buttons to the dialog being built with Create Dialog.", "tags": [], "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 273}, {"name": "Add Text Box", "args": [{"name": "name", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name: str"}, {"name": "label", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label: str | None = None"}, {"name": "default", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "default: str = "}, {"name": "mask", "type": {"name": "bool", "typedoc": "boolean", "nested": [], "union": false}, "defaultValue": "False", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "mask: bool = False"}], "returnType": null, "doc": "<p>Adds a text input field to the dialog being built with Create Dialog.</p>\n<p>Arguments:</p>\n<ul>\n<li>name: Key used for this field's value in Show Dialog's result</li>\n<li>label: Text shown next to the field (defaults to name)</li>\n<li>default: Pre-filled value</li>\n<li>mask: If True, displays entered text as asterisks (for passwords/secrets)</li>\n</ul>\n<p>Raises ExecutionFailed if called before Create Dialog, or if name was already used.</p>", "shortdoc": "Adds a text input field to the dialog being built with Create Dialog.", "tags": [], "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 242}, {"name": "Choose File", "args": [{"name": "message", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "message: str = "}, {"name": "filetypes", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "List", "typedoc": "list", "nested": [{"name": "tuple", "typedoc": "tuple", "nested": [], "union": false}], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "filetypes: List[tuple] | None = None"}, {"name": "multiple", "type": {"name": "bool", "typedoc": "boolean", "nested": [], "union": false}, "defaultValue": "False", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "multiple: bool = False"}], "returnType": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "List", "typedoc": "list", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "doc": "<p>Opens file picker dialog.</p>\n<p>Arguments:</p>\n<ul>\n<li>message: Instruction text</li>\n<li>filetypes: List of (description, pattern) tuples, e.g. [(\"Text files\", \"*.txt\")]</li>\n<li>multiple: Allow selecting multiple files</li>\n</ul>\n<p>Returns file path string, list of paths if multiple=True, or None if cancelled.</p>", "shortdoc": "Opens file picker dialog.", "tags": [], "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 138}, {"name": "Choose Folder", "args": [{"name": "message", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "message: str"}], "returnType": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "doc": "<p>Opens folder picker dialog.</p>\n<p>Arguments:</p>\n<ul>\n<li>message: Instruction text</li>\n</ul>\n<p>Returns folder path string or None if cancelled.</p>", "shortdoc": "Opens folder picker dialog.", "tags": [], "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 151}, {"name": "Confirm With Checkbox", "args": [{"name": "message", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "message: str"}, {"name": "checkbox_text", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": "I agree", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "checkbox_text: str = I agree"}], "returnType": {"name": "bool", "typedoc": "boolean", "nested": [], "union": false}, "doc": "<p>Shows confirmation dialog with checkbox.</p>\n<p>Arguments:</p>\n<ul>\n<li>message: Prompt text</li>\n<li>checkbox_text: Label for checkbox</li>\n</ul>\n<p>Returns True if checkbox was checked, False otherwise.</p>", "shortdoc": "Shows confirmation dialog with checkbox.", "tags": [], "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 162}, {"name": "Count Down", "args": [{"name": "seconds", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "int", "typedoc": "integer", "nested": [], "union": false}, {"name": "str", "typedoc": "string", "nested": [], "union": false}], "union": true}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "seconds: int | str"}], "returnType": null, "doc": "<p>Shows countdown timer dialog.</p>\n<p>Arguments:</p>\n<ul>\n<li>seconds: Duration in seconds</li>\n</ul>\n<p>Dialog closes automatically when timer reaches zero.</p>", "shortdoc": "Shows countdown timer dialog.", "tags": [], "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 98}, {"name": "Create Dialog", "args": [{"name": "title", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": "Custom Dialog", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "title: str = Custom Dialog"}], "returnType": null, "doc": "<p>Starts building a custom dialog with your own combination of elements.</p>\n<p>Arguments:</p>\n<ul>\n<li>title: Window title for the dialog</li>\n</ul>\n<p>Add elements with Add Text Box / Add Checkbox / Add Radio Group / Add Dropdown / Add Label / Add Button, then call Show Dialog to display it and get the results.</p>\n<p>Raises ExecutionFailed if a dialog is already being built (Show Dialog wasn't called yet for a previous Create Dialog).</p>", "shortdoc": "Starts building a custom dialog with your own combination of elements.", "tags": [], "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 225}, {"name": "Get Confirmation", "args": [{"name": "message", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "message: str"}], "returnType": {"name": "Union", "typedoc": null, "nested": [{"name": "bool", "typedoc": "boolean", "nested": [], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "doc": "<p>Shows Yes/No/Cancel confirmation dialog.</p>\n<p>Arguments:</p>\n<ul>\n<li>message: Question or prompt text</li>\n</ul>\n<p>Returns True for Yes, False for No, None for Cancel.</p>", "shortdoc": "Shows Yes/No/Cancel confirmation dialog.", "tags": [], "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 109}, {"name": "Get Multi Value", "args": [{"name": "fields", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "List", "typedoc": "list", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}], "union": false}], "union": true}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "fields: str | List[str]"}, {"name": "default", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "Dict", "typedoc": "dictionary", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "str", "typedoc": "string", "nested": [], "union": false}], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "default: Dict[str, str] | None = None"}], "returnType": {"name": "Union", "typedoc": null, "nested": [{"name": "Dict", "typedoc": "dictionary", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "str", "typedoc": "string", "nested": [], "union": false}], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "doc": "<p>Prompts user for multiple input values in one dialog.</p>\n<p>Arguments:</p>\n<ul>\n<li>fields: List of field names or single field</li>\n<li>default: Dictionary of default values per field</li>\n</ul>\n<p>Returns dictionary with field names as keys and user inputs as values, or None if cancelled.</p>", "shortdoc": "Prompts user for multiple input values in one dialog.", "tags": [], "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 120}, {"name": "Get Value From User Input", "args": [{"name": "prompt", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": "Enter value:", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "prompt: str = Enter value:"}, {"name": "default", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "default: str = "}], "returnType": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "doc": "<p>Prompts user for text input via dialog.</p>\n<p>Arguments:</p>\n<ul>\n<li>prompt: Text displayed above input field</li>\n<li>default: Pre-filled value</li>\n</ul>\n<p>Returns string input or None if cancelled.</p>", "shortdoc": "Prompts user for text input via dialog.", "tags": [], "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 70}, {"name": "Pause Test Execution", "args": [{"name": "message", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": "Test execution paused", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "message: str = Test execution paused"}, {"name": "command", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "command: str | None = None"}, {"name": "command_args", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "List", "typedoc": "list", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "command_args: List[str] | None = None"}], "returnType": null, "doc": "<p>Pauses test execution until user clicks Continue.</p>\n<p>Arguments:</p>\n<ul>\n<li>message: Text displayed in dialog</li>\n<li>command: Optional keyword name. When given, an extra \"Run\" button is shown next to Continue that runs it via Robot Framework's Run Keyword, so it must be a keyword already available in the running suite (user keyword, resource file, or imported library) - can be clicked any number of times while paused.</li>\n<li>command_args: Optional list of arguments passed to that keyword</li>\n</ul>\n<p>Test resumes when user clicks Continue button.</p>\n<p>Raises ExecutionFailed if the most recent \"Run\" click failed (e.g. the keyword doesn't exist or raised an error).</p>", "shortdoc": "Pauses test execution until user clicks Continue.", "tags": [], "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 202}, {"name": "Run Manual Steps", "args": [{"name": "steps", "type": null, "defaultValue": null, "kind": "VAR_POSITIONAL", "required": false, "repr": "*steps"}], "returnType": null, "doc": "<p>Displays manual test steps with Pass/Fail buttons.</p>\n<p>Arguments:</p>\n<ul>\n<li>steps: One step per argument (e.g. <span class=\"name\">open github add username add password</span>), or a single list/string variable (e.g. <span class=\"name\">${steps}</span>)</li>\n</ul>\n<p>Raises ExecutionFailed if user clicks Fail button.</p>", "shortdoc": "Displays manual test steps with Pass/Fail buttons.", "tags": [], "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 82}, {"name": "Select Options With Checkboxes", "args": [{"name": "message", "type": {"name": "str", "typedoc": "string", "nested": [], "union": false}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "message: str"}, {"name": "options", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "List", "typedoc": "list", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}], "union": false}], "union": true}, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "options: str | List[str]"}, {"name": "defaults", "type": {"name": "Union", "typedoc": null, "nested": [{"name": "List", "typedoc": "list", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}], "union": false}, {"name": "None", "typedoc": "None", "nested": [], "union": false}], "union": true}, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "defaults: List[str] | None = None"}], "returnType": {"name": "Dict", "typedoc": "dictionary", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "bool", "typedoc": "boolean", "nested": [], "union": false}], "union": false}, "doc": "<p>Shows multiple checkboxes for selection.</p>\n<p>Arguments:</p>\n<ul>\n<li>message: Instruction text</li>\n<li>options: List of options or pipe-separated string</li>\n<li>defaults: List of pre-selected option names</li>\n</ul>\n<p>Returns dictionary with option names as keys and True/False as values.</p>", "shortdoc": "Shows multiple checkboxes for selection.", "tags": [], "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 174}, {"name": "Show Dialog", "args": [], "returnType": {"name": "Dict", "typedoc": "dictionary", "nested": [{"name": "str", "typedoc": "string", "nested": [], "union": false}, {"name": "Any", "typedoc": "Any", "nested": [], "union": false}], "union": false}, "doc": "<p>Displays the dialog built with Create Dialog/Add ... keywords and returns the results.</p>\n<p>Returns a dictionary with one entry per named field (from Add Text Box/Add Checkbox), plus 'button' set to the text of whichever closing button was clicked.</p>\n<p>Raises ExecutionFailed if no dialog is in progress, if no closing button (Add Button with closes_dialog=True, the default) was added, or if the button that closed the dialog had a command that failed.</p>", "shortdoc": "Displays the dialog built with Create Dialog/Add ... keywords and returns the results.", "tags": [], "source": "C:\\Users\\xlmn\\Documents\\testing\\DialogsPlus\\src\\DialogsPlus\\dialogsplus.py", "lineno": 360}], "typedocs": [{"type": "Standard", "name": "Any", "doc": "<p>Any value is accepted. No conversion is done.</p>", "usages": ["Show Dialog"], "accepts": ["Any"]}, {"type": "Standard", "name": "boolean", "doc": "<p>Strings <code>TRUE</code>, <code>YES</code>, <code>ON</code> and <code>1</code> are converted to Boolean <code>True</code>, the empty string as well as strings <code>FALSE</code>, <code>NO</code>, <code>OFF</code> and <code>0</code> are converted to Boolean <code>False</code>, and the string <code>NONE</code> is converted to the Python <code>None</code> object. Other strings and other accepted values are passed as-is, allowing keywords to handle them specially if needed. All string comparisons are case-insensitive.</p>\n<p>Examples: <code>TRUE</code> (converted to <code>True</code>), <code>off</code> (converted to <code>False</code>), <code>example</code> (used as-is)</p>", "usages": ["Add Button", "Add Checkbox", "Add Text Box", "Choose File", "Confirm With Checkbox", "Get Confirmation", "Select Options With Checkboxes"], "accepts": ["string", "integer", "float", "None"]}, {"type": "Standard", "name": "dictionary", "doc": "<p>Strings must be Python <a href=\"https://docs.python.org/library/stdtypes.html#dict\">dictionary</a> literals. They are converted to actual dictionaries using the <a href=\"https://docs.python.org/library/ast.html#ast.literal_eval\">ast.literal_eval</a> function. They can contain any values <code>ast.literal_eval</code> supports, including dictionaries and other containers.</p>\n<p>If the type has nested types like <code>dict[str, int]</code>, items are converted to those types automatically. This in new in Robot Framework 6.0.</p>\n<p>Examples: <code>{'a': 1, 'b': 2}</code>, <code>{'key': 1, 'nested': {'key': 2}}</code></p>", "usages": ["Get Multi Value", "Select Options With Checkboxes", "Show Dialog"], "accepts": ["string", "Mapping"]}, {"type": "Standard", "name": "integer", "doc": "<p>Conversion is done using Python's <a href=\"https://docs.python.org/library/functions.html#int\">int</a> built-in function. Floating point numbers are accepted only if they can be represented as integers exactly. For example, <code>1.0</code> is accepted and <code>1.1</code> is not.</p>\n<p>Starting from RF 4.1, it is possible to use hexadecimal, octal and binary numbers by prefixing values with <code>0x</code>, <code>0o</code> and <code>0b</code>, respectively.</p>\n<p>Starting from RF 4.1, spaces and underscores can be used as visual separators for digit grouping purposes.</p>\n<p>Examples: <code>42</code>, <code>-1</code>, <code>0b1010</code>, <code>10 000 000</code>, <code>0xBAD_C0FFEE</code></p>", "usages": ["Count Down"], "accepts": ["string", "float"]}, {"type": "Standard", "name": "list", "doc": "<p>Strings must be Python <a href=\"https://docs.python.org/library/stdtypes.html#list\">list</a> literals. They are converted to actual lists using the <a href=\"https://docs.python.org/library/ast.html#ast.literal_eval\">ast.literal_eval</a> function. They can contain any values <code>ast.literal_eval</code> supports, including lists and other containers.</p>\n<p>If the type has nested types like <code>list[int]</code>, items are converted to those types automatically. This in new in Robot Framework 6.0.</p>\n<p>Examples: <code>['one', 'two']</code>, <code>[('one', 1), ('two', 2)]</code></p>", "usages": ["Add Button", "Add Dropdown", "Add Radio Group", "Choose File", "Get Multi Value", "Pause Test Execution", "Select Options With Checkboxes"], "accepts": ["string", "Sequence"]}, {"type": "Standard", "name": "None", "doc": "<p>String <code>NONE</code> (case-insensitive) is converted to Python <code>None</code> object. Other values cause an error.</p>", "usages": ["__init__", "Add Button", "Add Checkbox", "Add Dropdown", "Add Radio Group", "Add Text Box", "Choose File", "Choose Folder", "Get Confirmation", "Get Multi Value", "Get Value From User Input", "Pause Test Execution", "Select Options With Checkboxes"], "accepts": ["string"]}, {"type": "Standard", "name": "string", "doc": "<p>All arguments are converted to Unicode strings.</p>", "usages": ["__init__", "Add Button", "Add Checkbox", "Add Dropdown", "Add Label", "Add Radio Group", "Add Text Box", "Choose File", "Choose Folder", "Confirm With Checkbox", "Count Down", "Create Dialog", "Get Confirmation", "Get Multi Value", "Get Value From User Input", "Pause Test Execution", "Select Options With Checkboxes", "Show Dialog"], "accepts": ["Any"]}, {"type": "Standard", "name": "tuple", "doc": "<p>Strings must be Python <a href=\"https://docs.python.org/library/stdtypes.html#tuple\">tuple</a> literals. They are converted to actual tuples using the <a href=\"https://docs.python.org/library/ast.html#ast.literal_eval\">ast.literal_eval</a> function. They can contain any values <code>ast.literal_eval</code> supports, including tuples and other containers.</p>\n<p>If the type has nested types like <code>tuple[str, int, int]</code>, items are converted to those types automatically. This in new in Robot Framework 6.0.</p>\n<p>Examples: <code>('one', 'two')</code>, <code>(('one', 1), ('two', 2))</code></p>", "usages": ["Choose File"], "accepts": ["string", "Sequence"]}]}
|
|
12
12
|
</script>
|
|
13
13
|
<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
|
|
14
14
|
</head>
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# 📘 DialogsPlus Documentation
|
|
2
|
+
|
|
3
|
+
DialogsPlus is an extended UI/dialog library for Robot Framework, designed to interactively collect user inputs, confirmations, file/folder selections, and control test execution flow with dialogs.
|
|
4
|
+
|
|
5
|
+
This document describes the available keywords and provides usage examples.
|
|
6
|
+
|
|
7
|
+
# 🔧 Configuration
|
|
8
|
+
Before using the library, you can specify an optional YAML config:
|
|
9
|
+
|
|
10
|
+
```bach
|
|
11
|
+
*** Settings ***
|
|
12
|
+
Library DialogsPlus #config=path/to/config.yaml
|
|
13
|
+
```
|
|
14
|
+
Optional config file allows customization of:
|
|
15
|
+
|
|
16
|
+
- Theme colors
|
|
17
|
+
|
|
18
|
+
- Font sizes
|
|
19
|
+
|
|
20
|
+
- Window dimensions
|
|
21
|
+
|
|
22
|
+
- Padding
|
|
23
|
+
```yaml
|
|
24
|
+
title: "Custom Dialog"
|
|
25
|
+
width: 400
|
|
26
|
+
height: 200
|
|
27
|
+
theme: "green"
|
|
28
|
+
appearance_mode: "light"
|
|
29
|
+
button_fg_color: "#aaa"
|
|
30
|
+
etc...
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 🧩 Keywords Overview
|
|
34
|
+
|
|
35
|
+
🧾 `Get Value From User Input`
|
|
36
|
+
Prompts the user for a single line of text input.
|
|
37
|
+
|
|
38
|
+
```r
|
|
39
|
+
${result} Get Value From User Input prompt=Enter your name: default=Robot framework
|
|
40
|
+
Should Be Equal ${result} Robot framework
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
📝 `Run Manual Steps`
|
|
44
|
+
Displays manual test steps with Pass/Fail buttons.
|
|
45
|
+
|
|
46
|
+
```r
|
|
47
|
+
${steps} Create List
|
|
48
|
+
... 01 Open the app
|
|
49
|
+
... 02 Click Start button
|
|
50
|
+
... 03 Verify status
|
|
51
|
+
|
|
52
|
+
Run Manual Steps ${steps}
|
|
53
|
+
# Or One Test Step as normal text:
|
|
54
|
+
Run Manual Steps Open Google
|
|
55
|
+
```
|
|
56
|
+
⏳ `Count Down`
|
|
57
|
+
Shows a countdown timer dialog that automatically closes.
|
|
58
|
+
```r
|
|
59
|
+
Count Down 5
|
|
60
|
+
```
|
|
61
|
+
❓ `Get Confirmation` Displays a Yes / No / Cancel dialog.
|
|
62
|
+
```r
|
|
63
|
+
${result} Get Confirmation Are you sure?
|
|
64
|
+
Should Be True ${result}
|
|
65
|
+
```
|
|
66
|
+
🧮 `Get Multi Value` Prompts for multiple input fields in a single dialog.
|
|
67
|
+
```r
|
|
68
|
+
*** Test Cases ***
|
|
69
|
+
Get Value Test
|
|
70
|
+
${result} Get Multi Value username
|
|
71
|
+
Should Be Equal ${result}[username] user1
|
|
72
|
+
|
|
73
|
+
# Or another approach, with more fields!
|
|
74
|
+
|
|
75
|
+
*** Variables ***
|
|
76
|
+
@{fields_val} username password email phone
|
|
77
|
+
&{default_val} username=admin password=P@55 phone=1234567
|
|
78
|
+
|
|
79
|
+
*** Test Cases ***
|
|
80
|
+
Get Multi Value Multiple Fields
|
|
81
|
+
${result} Get Multi Value ${fields_val} default=${default_val}
|
|
82
|
+
Should Be Equal ${result}[password] P@55
|
|
83
|
+
Should Be Equal ${result}[phone] 1234567
|
|
84
|
+
```
|
|
85
|
+
📄 `Choose File` Opens a native file picker dialog and Returns file **PATH** as a string.
|
|
86
|
+
```r
|
|
87
|
+
Choose Single XML File
|
|
88
|
+
${XML_FILETYPES} Evaluate [("xml files", "*.xml")] # [("Text files", "*.txt")]
|
|
89
|
+
${result}= Choose File
|
|
90
|
+
... message=Select Single XML File
|
|
91
|
+
... filetypes=${XML_FILETYPES}
|
|
92
|
+
|
|
93
|
+
# Or another approach, with many files path and return as a list[str]!
|
|
94
|
+
|
|
95
|
+
Choose Multiple HTML Files
|
|
96
|
+
${HTML_FILETYPES} Evaluate [("HTML", "*.html")]
|
|
97
|
+
${result}= Choose File
|
|
98
|
+
... message=Select Multiple HTML Files
|
|
99
|
+
... filetypes=${HTML_FILETYPES} multiple=True
|
|
100
|
+
Should Contain ${result}[0] .html
|
|
101
|
+
```
|
|
102
|
+
📁 `Choose Folder` Opens a folder selection dialog.
|
|
103
|
+
```r
|
|
104
|
+
${dir} Choose Folder message=Select output directory
|
|
105
|
+
Directory Should Exist ${dir}
|
|
106
|
+
```
|
|
107
|
+
✅ `Confirm With Checkbox` Prompts the user to confirm an action with a checkbox.
|
|
108
|
+
```r
|
|
109
|
+
Select Single CheckBox
|
|
110
|
+
${confirmed} Confirm With Checkbox
|
|
111
|
+
... message=Accept terms?
|
|
112
|
+
... checkbox_text=I accept
|
|
113
|
+
Should Be True ${confirmed}
|
|
114
|
+
|
|
115
|
+
# Or with many checkboxes
|
|
116
|
+
|
|
117
|
+
*** Variables ***
|
|
118
|
+
@{fields_val} username password email phone
|
|
119
|
+
|
|
120
|
+
*** Test Cases ***
|
|
121
|
+
Select Many Checkbox Test
|
|
122
|
+
${r} Select Options With Checkboxes
|
|
123
|
+
... message=Select as much as you want
|
|
124
|
+
... options=${fields_val}
|
|
125
|
+
|
|
126
|
+
Should Not Be True ${r}[username]
|
|
127
|
+
Should Not Be True ${r}[password]
|
|
128
|
+
Should Not Be True ${r}[email]
|
|
129
|
+
Should Not Be True ${r}[phone]
|
|
130
|
+
|
|
131
|
+
# Another example with default checkboxes checked!
|
|
132
|
+
|
|
133
|
+
Select Many Checkbox With Defaults Test
|
|
134
|
+
@{Contacts} Create List Email SMS Phone Slack Discord
|
|
135
|
+
@{Selected_Defaults} Create List Email SMS
|
|
136
|
+
${selected}= Select Options With Checkboxes
|
|
137
|
+
... message=Choose your preferences
|
|
138
|
+
... options=${Contacts}
|
|
139
|
+
... defaults=@{Selected_Defaults} # Default Selected!
|
|
140
|
+
|
|
141
|
+
Should Be True ${selected}[Email]
|
|
142
|
+
Should Be True ${selected}[SMS]
|
|
143
|
+
Should Not Be True ${selected}[Phone]
|
|
144
|
+
Should Not Be True ${selected}[Slack]
|
|
145
|
+
Should Not Be True ${selected}[Discord]
|
|
146
|
+
```
|
|
147
|
+
⏸️ `Pause Test Execution` Pauses the test run and waits for the user to click "Continue".
|
|
148
|
+
```r
|
|
149
|
+
Pause Test Execution message=Manually verify system state
|
|
150
|
+
```
|