robotframework-okw-web-selenium 0.3.0__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.
Files changed (35) hide show
  1. robotframework_okw_web_selenium-0.3.0/LICENSE +36 -0
  2. robotframework_okw_web_selenium-0.3.0/PKG-INFO +222 -0
  3. robotframework_okw_web_selenium-0.3.0/README.md +155 -0
  4. robotframework_okw_web_selenium-0.3.0/pyproject.toml +55 -0
  5. robotframework_okw_web_selenium-0.3.0/setup.cfg +4 -0
  6. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/__init__.py +3 -0
  7. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/adapters/__init__.py +0 -0
  8. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/adapters/selenium_web.py +209 -0
  9. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/keywords/__init__.py +0 -0
  10. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/keywords/web_keywords.py +28 -0
  11. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/library.py +55 -0
  12. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/locators/Chrome.yaml +14 -0
  13. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/locators/Firefox.yaml +14 -0
  14. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/locators/__init__.py +0 -0
  15. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/__init__.py +43 -0
  16. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/host/__init__.py +0 -0
  17. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/host/browsercontrol/BrowserControl.py +10 -0
  18. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/host/browsercontrol/UrlBar.py +11 -0
  19. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/host/browsercontrol/__init__.py +2 -0
  20. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_base.py +256 -0
  21. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_button.py +11 -0
  22. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_checkbox.py +20 -0
  23. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_combobox.py +103 -0
  24. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_label.py +10 -0
  25. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_link.py +11 -0
  26. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_listbox.py +38 -0
  27. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_multilinefield.py +11 -0
  28. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_radiolist.py +114 -0
  29. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_table.py +90 -0
  30. robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_textfield.py +21 -0
  31. robotframework_okw_web_selenium-0.3.0/src/robotframework_okw_web_selenium.egg-info/PKG-INFO +222 -0
  32. robotframework_okw_web_selenium-0.3.0/src/robotframework_okw_web_selenium.egg-info/SOURCES.txt +33 -0
  33. robotframework_okw_web_selenium-0.3.0/src/robotframework_okw_web_selenium.egg-info/dependency_links.txt +1 -0
  34. robotframework_okw_web_selenium-0.3.0/src/robotframework_okw_web_selenium.egg-info/requires.txt +6 -0
  35. robotframework_okw_web_selenium-0.3.0/src/robotframework_okw_web_selenium.egg-info/top_level.txt +1 -0
@@ -0,0 +1,36 @@
1
+ OKW4Robot Community License (Nicht‑kommerzielle Nutzung)
2
+
3
+ Copyright (c) 2025 Zoltán Hrabovszki
4
+
5
+ 1. Begriffe
6
+ - "Software": die Bibliothek "OKW4Robot" samt zugehöriger Quell‑ und Binärdateien.
7
+ - "Nicht‑kommerzielle Nutzung": jede Nutzung zu privaten, akademischen oder Open‑Source‑Zwecken ohne direkten oder indirekten Umsatzbezug, sowie reine Evaluierung/PoC.
8
+ - "Kommerzielle Nutzung": jede Nutzung in oder für ein Produkt, einen Service oder Prozess, der direkt oder indirekt Einnahmen generiert (z. B. bezahlte Projekte, Firmen‑CI/Tests für kommerzielle Produkte, SaaS, Resale). Für kommerzielle Nutzung ist eine gesonderte kommerzielle Lizenz erforderlich.
9
+
10
+ 2. Lizenzgewährung (nicht‑kommerziell)
11
+ Der Rechteinhaber gewährt eine weltweite, nicht‑exklusive, nicht übertragbare, unentgeltliche Lizenz zur Nutzung, Vervielfältigung, Änderung und Weitergabe der Software ausschließlich für nicht‑kommerzielle Zwecke, vorausgesetzt, dass (a) dieser Lizenztext in Kopien und abgeleiteten Werken enthalten bleibt und (b) Urheber‑ und Hinweistexte nicht entfernt werden.
12
+
13
+ 3. Einschränkungen
14
+ - Kommerzielle Nutzung ist ohne kommerzielle Lizenz untersagt.
15
+ - Marken‑ und Namensrechte werden nicht gewährt.
16
+ - Sublicensing ist nur unter Beibehaltung dieser Bedingungen zulässig.
17
+
18
+ 4. Support
19
+ Es besteht kein Anspruch auf Wartung, Support oder Updates.
20
+
21
+ 5. Gewährleistungsausschluss
22
+ Die Software wird "wie besehen" ("AS IS") bereitgestellt, ohne ausdrückliche oder stillschweigende Gewährleistung. Insbesondere wird keine Gewähr für Marktgängigkeit, Eignung für einen bestimmten Zweck, Nichtverletzung von Rechten Dritter, Fehlerfreiheit, Richtigkeit oder Verfügbarkeit übernommen.
23
+
24
+ 6. Haftungsbeschränkung
25
+ Soweit gesetzlich zulässig, haften der Rechteinhaber und Mitwirkende in keinem Fall für Schäden jedweder Art (einschließlich, aber nicht beschränkt auf direkte, indirekte, zufällige, besondere, exemplarische oder Folgeschäden, entgangenen Gewinn, Produktions‑/Betriebsunterbrechung, Datenverlust oder Rechtsverfolgungskosten), die aus der Nutzung, Unmöglichkeit der Nutzung oder Leistung der Software entstehen, selbst wenn auf die Möglichkeit solcher Schäden hingewiesen wurde.
26
+
27
+ Unberührt bleiben zwingende Haftungstatbestände (z. B. nach dem Produkthaftungsgesetz) sowie die Haftung für Vorsatz, grobe Fahrlässigkeit oder für Verletzungen von Leben, Körper oder Gesundheit nach geltendem Recht.
28
+
29
+ 7. Laufzeit und Beendigung
30
+ Diese Lizenz gilt bis zu ihrer Beendigung. Bei Verstoß erlischt das Nutzungsrecht automatisch; die Nutzung ist einzustellen. Rechte an bereits rechtmäßig weitergegebenen Kopien bleiben unberührt.
31
+
32
+ 8. Sonstiges
33
+ Es gilt materielles Recht des Sitzstaats des Rechteinhabers unter Ausschluss des Kollisionsrechts. Sollte eine Bestimmung unwirksam sein, bleibt der Rest wirksam (Salvatorische Klausel).
34
+
35
+ Kommerzielle Lizenz
36
+ Für eine kommerzielle Nutzung (siehe Abschnitt 1) wenden Sie sich bitte an den Rechteinhaber, um Konditionen und Gebühren zu vereinbaren.
@@ -0,0 +1,222 @@
1
+ Metadata-Version: 2.4
2
+ Name: robotframework-okw-web-selenium
3
+ Version: 0.3.0
4
+ Summary: Selenium driver for OKW4Robot - Web GUI test automation with Chrome, Firefox and more.
5
+ Author: Zoltán Hrabovszki
6
+ License: OKW4Robot Community License (Nicht‑kommerzielle Nutzung)
7
+
8
+ Copyright (c) 2025 Zoltán Hrabovszki
9
+
10
+ 1. Begriffe
11
+ - "Software": die Bibliothek "OKW4Robot" samt zugehöriger Quell‑ und Binärdateien.
12
+ - "Nicht‑kommerzielle Nutzung": jede Nutzung zu privaten, akademischen oder Open‑Source‑Zwecken ohne direkten oder indirekten Umsatzbezug, sowie reine Evaluierung/PoC.
13
+ - "Kommerzielle Nutzung": jede Nutzung in oder für ein Produkt, einen Service oder Prozess, der direkt oder indirekt Einnahmen generiert (z. B. bezahlte Projekte, Firmen‑CI/Tests für kommerzielle Produkte, SaaS, Resale). Für kommerzielle Nutzung ist eine gesonderte kommerzielle Lizenz erforderlich.
14
+
15
+ 2. Lizenzgewährung (nicht‑kommerziell)
16
+ Der Rechteinhaber gewährt eine weltweite, nicht‑exklusive, nicht übertragbare, unentgeltliche Lizenz zur Nutzung, Vervielfältigung, Änderung und Weitergabe der Software ausschließlich für nicht‑kommerzielle Zwecke, vorausgesetzt, dass (a) dieser Lizenztext in Kopien und abgeleiteten Werken enthalten bleibt und (b) Urheber‑ und Hinweistexte nicht entfernt werden.
17
+
18
+ 3. Einschränkungen
19
+ - Kommerzielle Nutzung ist ohne kommerzielle Lizenz untersagt.
20
+ - Marken‑ und Namensrechte werden nicht gewährt.
21
+ - Sublicensing ist nur unter Beibehaltung dieser Bedingungen zulässig.
22
+
23
+ 4. Support
24
+ Es besteht kein Anspruch auf Wartung, Support oder Updates.
25
+
26
+ 5. Gewährleistungsausschluss
27
+ Die Software wird "wie besehen" ("AS IS") bereitgestellt, ohne ausdrückliche oder stillschweigende Gewährleistung. Insbesondere wird keine Gewähr für Marktgängigkeit, Eignung für einen bestimmten Zweck, Nichtverletzung von Rechten Dritter, Fehlerfreiheit, Richtigkeit oder Verfügbarkeit übernommen.
28
+
29
+ 6. Haftungsbeschränkung
30
+ Soweit gesetzlich zulässig, haften der Rechteinhaber und Mitwirkende in keinem Fall für Schäden jedweder Art (einschließlich, aber nicht beschränkt auf direkte, indirekte, zufällige, besondere, exemplarische oder Folgeschäden, entgangenen Gewinn, Produktions‑/Betriebsunterbrechung, Datenverlust oder Rechtsverfolgungskosten), die aus der Nutzung, Unmöglichkeit der Nutzung oder Leistung der Software entstehen, selbst wenn auf die Möglichkeit solcher Schäden hingewiesen wurde.
31
+
32
+ Unberührt bleiben zwingende Haftungstatbestände (z. B. nach dem Produkthaftungsgesetz) sowie die Haftung für Vorsatz, grobe Fahrlässigkeit oder für Verletzungen von Leben, Körper oder Gesundheit nach geltendem Recht.
33
+
34
+ 7. Laufzeit und Beendigung
35
+ Diese Lizenz gilt bis zu ihrer Beendigung. Bei Verstoß erlischt das Nutzungsrecht automatisch; die Nutzung ist einzustellen. Rechte an bereits rechtmäßig weitergegebenen Kopien bleiben unberührt.
36
+
37
+ 8. Sonstiges
38
+ Es gilt materielles Recht des Sitzstaats des Rechteinhabers unter Ausschluss des Kollisionsrechts. Sollte eine Bestimmung unwirksam sein, bleibt der Rest wirksam (Salvatorische Klausel).
39
+
40
+ Kommerzielle Lizenz
41
+ Für eine kommerzielle Nutzung (siehe Abschnitt 1) wenden Sie sich bitte an den Rechteinhaber, um Konditionen und Gebühren zu vereinbaren.
42
+
43
+ Project-URL: Repository, https://github.com/Hrabovszki1023/robotframework-okw-web-selenium
44
+ Project-URL: Homepage, https://github.com/Hrabovszki1023/robotframework-okw-web-selenium
45
+ Project-URL: Documentation, https://hrabovszki1023.github.io/robotframework-okw-web-selenium/
46
+ Keywords: robotframework,testing,testautomation,gui,selenium,okw,web
47
+ Classifier: Development Status :: 4 - Beta
48
+ Classifier: Operating System :: OS Independent
49
+ Classifier: Programming Language :: Python :: 3
50
+ Classifier: Programming Language :: Python :: 3 :: Only
51
+ Classifier: Programming Language :: Python :: 3.10
52
+ Classifier: Programming Language :: Python :: 3.11
53
+ Classifier: Programming Language :: Python :: 3.12
54
+ Classifier: Programming Language :: Python :: 3.13
55
+ Classifier: Framework :: Robot Framework
56
+ Classifier: Framework :: Robot Framework :: Library
57
+ Classifier: Topic :: Software Development :: Testing
58
+ Requires-Python: >=3.10
59
+ Description-Content-Type: text/markdown
60
+ License-File: LICENSE
61
+ Requires-Dist: robotframework-okw4robot>=0.4.0
62
+ Requires-Dist: robotframework-seleniumlibrary>=6.0
63
+ Requires-Dist: selenium>=4.0
64
+ Provides-Extra: dev
65
+ Requires-Dist: pytest>=7.0; extra == "dev"
66
+ Dynamic: license-file
67
+
68
+ # OKW Web Selenium
69
+
70
+ Selenium WebDriver plugin for [OKW4Robot](https://github.com/Hrabovszki1023/robotframework-okw4robot) —
71
+ the driver-agnostic keyword library for [Robot Framework](https://robotframework.org/).
72
+
73
+ This package provides `WebSe_*` widget implementations that translate
74
+ OKW keywords (`SetValue`, `ClickOn`, `VerifyValue`, ...) into Selenium
75
+ WebDriver calls for Chrome, Firefox, Edge and other browsers.
76
+
77
+ > **Deutsche Version:** [README_de.md](README_de.md)
78
+
79
+ ---
80
+
81
+ ## Installation
82
+
83
+ ```bash
84
+ pip install robotframework-okw-web-selenium
85
+ ```
86
+
87
+ This automatically installs `robotframework-okw4robot` (core) and
88
+ `robotframework-seleniumlibrary` as dependencies.
89
+
90
+ ---
91
+
92
+ ## Quick Start
93
+
94
+ ```robotframework
95
+ *** Settings ***
96
+ Library okw_web_selenium.library.OkwWebSeleniumLibrary
97
+
98
+ *** Test Cases ***
99
+ Login Test
100
+ StartHost Chrome
101
+ StartApp Chrome
102
+ SelectWindow Chrome
103
+ SetValue URL https://example.com/login
104
+ StartApp MyApp
105
+ SelectWindow LoginDialog
106
+ SetValue Username admin
107
+ SetValue Password secret
108
+ ClickOn Login
109
+ VerifyValue Status Logged in
110
+ StopHost
111
+ ```
112
+
113
+ All keywords come from the core (`okw4robot`). This package only provides
114
+ the Selenium-specific widget implementations — you never import individual
115
+ keyword modules.
116
+
117
+ ---
118
+
119
+ ## How It Works
120
+
121
+ ```
122
+ OKW4Robot keyword This package (WebSe_*)
123
+ ───────────────── ──────────────────────
124
+ SetValue "Name" "Smith" → WebSe_TextField.okw_set_value("Smith")
125
+ └→ Selenium: clear + input_text
126
+
127
+ ClickOn "Login" → WebSe_Button.okw_click()
128
+ └→ Selenium: click_element
129
+
130
+ VerifyValue "Status" "OK" → WebSe_Label.okw_get_value()
131
+ └→ Selenium: get_text → polling loop
132
+ ```
133
+
134
+ The YAML locator file determines which `WebSe_*` class is used for each
135
+ GUI object:
136
+
137
+ ```yaml
138
+ # locators/MyApp.yaml
139
+ MyApp:
140
+ LoginDialog:
141
+ Username:
142
+ class: okw_web_selenium.widgets.webse_textfield.WebSe_TextField
143
+ locator: { id: user_input }
144
+ Password:
145
+ class: okw_web_selenium.widgets.webse_textfield.WebSe_TextField
146
+ locator: { id: password_input }
147
+ Login:
148
+ class: okw_web_selenium.widgets.webse_button.WebSe_Button
149
+ locator: { css: "button[type=submit]" }
150
+ ```
151
+
152
+ ---
153
+
154
+ ## Widget Classes
155
+
156
+ | Class | HTML Elements | Key Methods |
157
+ |-------|--------------|-------------|
158
+ | `WebSe_TextField` | `<input>`, `<textarea>` | set_value, type_key, get_value, delete |
159
+ | `WebSe_Button` | `<button>`, `<input type=button>` | click, double_click, get_text |
160
+ | `WebSe_CheckBox` | `<input type=checkbox>` | click, set_value, get_value |
161
+ | `WebSe_ComboBox` | `<select>`, custom dropdowns | select, get_value, get_list_count |
162
+ | `WebSe_ListBox` | `<select multiple>`, `<ul>` lists | select, get_value, get_list_count |
163
+ | `WebSe_RadioList` | `<input type=radio>` groups | select, get_value |
164
+ | `WebSe_Label` | `<span>`, `<div>`, `<p>`, `<label>` | get_value, get_text |
165
+ | `WebSe_Link` | `<a>` | click, get_text |
166
+ | `WebSe_Table` | `<table>` | get_cell_value, get_row_count, get_headers |
167
+ | `WebSe_MultilineField` | `<textarea>`, contenteditable | set_value, type_key, get_value |
168
+ | `BrowserControl` | Browser host | start, stop, select_window |
169
+ | `UrlBar` | Address bar | set_value (navigate to URL) |
170
+
171
+ Full reference: [docs/widgets_common.md](docs/widgets_common.md)
172
+
173
+ ---
174
+
175
+ ## Documentation
176
+
177
+ - [docs/README.md](docs/README.md) – Documentation overview
178
+ - [docs/widgets_common.md](docs/widgets_common.md) – WebSe_* class reference
179
+ - [docs/Web_Widget_Matrix.md](docs/Web_Widget_Matrix.md) – HTML element → widget mapping
180
+ - [docs/radiolist.md](docs/radiolist.md) – RadioList locator strategies
181
+ - [docs/docs_host_app_config.md](docs/docs_host_app_config.md) – Host/App YAML configuration
182
+ - [docs/executejs-snippets.md](docs/executejs-snippets.md) – JavaScript snippets for ExecuteJS
183
+
184
+ For core documentation (keywords, contracts, timeouts, sync strategy) see
185
+ [robotframework-okw4robot](https://github.com/Hrabovszki1023/robotframework-okw4robot).
186
+
187
+ ---
188
+
189
+ ## Project Structure
190
+
191
+ ```
192
+ robotframework-okw-web-selenium/
193
+ src/okw_web_selenium/
194
+ library.py # OkwWebSeleniumLibrary (extends OKW4RobotLibrary)
195
+ adapter.py # SeleniumAdapter (browser lifecycle)
196
+ widgets/
197
+ webse_base.py # WebSe_Base (shared Selenium logic)
198
+ webse_textfield.py # WebSe_TextField
199
+ webse_button.py # WebSe_Button
200
+ webse_checkbox.py # WebSe_CheckBox
201
+ webse_combobox.py # WebSe_ComboBox
202
+ webse_listbox.py # WebSe_ListBox
203
+ webse_radiolist.py # WebSe_RadioList
204
+ webse_label.py # WebSe_Label
205
+ webse_link.py # WebSe_Link
206
+ webse_table.py # WebSe_Table
207
+ webse_multilinefield.py
208
+ host/
209
+ browsercontrol/ # BrowserControl + UrlBar
210
+ locators/ # Built-in YAML locators (Chrome, WidgetsDemo, ...)
211
+ tests/
212
+ robot/ # 53 Robot Framework integration tests
213
+ docs/
214
+ ```
215
+
216
+ ---
217
+
218
+ ## License
219
+
220
+ - **Community** (non-commercial): see [LICENSE](LICENSE)
221
+ - **Commercial**: see [COMMERCIAL_LICENSE.md](COMMERCIAL_LICENSE.md)
222
+ - **FAQ**: [docs/license_faq.md](docs/license_faq.md)
@@ -0,0 +1,155 @@
1
+ # OKW Web Selenium
2
+
3
+ Selenium WebDriver plugin for [OKW4Robot](https://github.com/Hrabovszki1023/robotframework-okw4robot) —
4
+ the driver-agnostic keyword library for [Robot Framework](https://robotframework.org/).
5
+
6
+ This package provides `WebSe_*` widget implementations that translate
7
+ OKW keywords (`SetValue`, `ClickOn`, `VerifyValue`, ...) into Selenium
8
+ WebDriver calls for Chrome, Firefox, Edge and other browsers.
9
+
10
+ > **Deutsche Version:** [README_de.md](README_de.md)
11
+
12
+ ---
13
+
14
+ ## Installation
15
+
16
+ ```bash
17
+ pip install robotframework-okw-web-selenium
18
+ ```
19
+
20
+ This automatically installs `robotframework-okw4robot` (core) and
21
+ `robotframework-seleniumlibrary` as dependencies.
22
+
23
+ ---
24
+
25
+ ## Quick Start
26
+
27
+ ```robotframework
28
+ *** Settings ***
29
+ Library okw_web_selenium.library.OkwWebSeleniumLibrary
30
+
31
+ *** Test Cases ***
32
+ Login Test
33
+ StartHost Chrome
34
+ StartApp Chrome
35
+ SelectWindow Chrome
36
+ SetValue URL https://example.com/login
37
+ StartApp MyApp
38
+ SelectWindow LoginDialog
39
+ SetValue Username admin
40
+ SetValue Password secret
41
+ ClickOn Login
42
+ VerifyValue Status Logged in
43
+ StopHost
44
+ ```
45
+
46
+ All keywords come from the core (`okw4robot`). This package only provides
47
+ the Selenium-specific widget implementations — you never import individual
48
+ keyword modules.
49
+
50
+ ---
51
+
52
+ ## How It Works
53
+
54
+ ```
55
+ OKW4Robot keyword This package (WebSe_*)
56
+ ───────────────── ──────────────────────
57
+ SetValue "Name" "Smith" → WebSe_TextField.okw_set_value("Smith")
58
+ └→ Selenium: clear + input_text
59
+
60
+ ClickOn "Login" → WebSe_Button.okw_click()
61
+ └→ Selenium: click_element
62
+
63
+ VerifyValue "Status" "OK" → WebSe_Label.okw_get_value()
64
+ └→ Selenium: get_text → polling loop
65
+ ```
66
+
67
+ The YAML locator file determines which `WebSe_*` class is used for each
68
+ GUI object:
69
+
70
+ ```yaml
71
+ # locators/MyApp.yaml
72
+ MyApp:
73
+ LoginDialog:
74
+ Username:
75
+ class: okw_web_selenium.widgets.webse_textfield.WebSe_TextField
76
+ locator: { id: user_input }
77
+ Password:
78
+ class: okw_web_selenium.widgets.webse_textfield.WebSe_TextField
79
+ locator: { id: password_input }
80
+ Login:
81
+ class: okw_web_selenium.widgets.webse_button.WebSe_Button
82
+ locator: { css: "button[type=submit]" }
83
+ ```
84
+
85
+ ---
86
+
87
+ ## Widget Classes
88
+
89
+ | Class | HTML Elements | Key Methods |
90
+ |-------|--------------|-------------|
91
+ | `WebSe_TextField` | `<input>`, `<textarea>` | set_value, type_key, get_value, delete |
92
+ | `WebSe_Button` | `<button>`, `<input type=button>` | click, double_click, get_text |
93
+ | `WebSe_CheckBox` | `<input type=checkbox>` | click, set_value, get_value |
94
+ | `WebSe_ComboBox` | `<select>`, custom dropdowns | select, get_value, get_list_count |
95
+ | `WebSe_ListBox` | `<select multiple>`, `<ul>` lists | select, get_value, get_list_count |
96
+ | `WebSe_RadioList` | `<input type=radio>` groups | select, get_value |
97
+ | `WebSe_Label` | `<span>`, `<div>`, `<p>`, `<label>` | get_value, get_text |
98
+ | `WebSe_Link` | `<a>` | click, get_text |
99
+ | `WebSe_Table` | `<table>` | get_cell_value, get_row_count, get_headers |
100
+ | `WebSe_MultilineField` | `<textarea>`, contenteditable | set_value, type_key, get_value |
101
+ | `BrowserControl` | Browser host | start, stop, select_window |
102
+ | `UrlBar` | Address bar | set_value (navigate to URL) |
103
+
104
+ Full reference: [docs/widgets_common.md](docs/widgets_common.md)
105
+
106
+ ---
107
+
108
+ ## Documentation
109
+
110
+ - [docs/README.md](docs/README.md) – Documentation overview
111
+ - [docs/widgets_common.md](docs/widgets_common.md) – WebSe_* class reference
112
+ - [docs/Web_Widget_Matrix.md](docs/Web_Widget_Matrix.md) – HTML element → widget mapping
113
+ - [docs/radiolist.md](docs/radiolist.md) – RadioList locator strategies
114
+ - [docs/docs_host_app_config.md](docs/docs_host_app_config.md) – Host/App YAML configuration
115
+ - [docs/executejs-snippets.md](docs/executejs-snippets.md) – JavaScript snippets for ExecuteJS
116
+
117
+ For core documentation (keywords, contracts, timeouts, sync strategy) see
118
+ [robotframework-okw4robot](https://github.com/Hrabovszki1023/robotframework-okw4robot).
119
+
120
+ ---
121
+
122
+ ## Project Structure
123
+
124
+ ```
125
+ robotframework-okw-web-selenium/
126
+ src/okw_web_selenium/
127
+ library.py # OkwWebSeleniumLibrary (extends OKW4RobotLibrary)
128
+ adapter.py # SeleniumAdapter (browser lifecycle)
129
+ widgets/
130
+ webse_base.py # WebSe_Base (shared Selenium logic)
131
+ webse_textfield.py # WebSe_TextField
132
+ webse_button.py # WebSe_Button
133
+ webse_checkbox.py # WebSe_CheckBox
134
+ webse_combobox.py # WebSe_ComboBox
135
+ webse_listbox.py # WebSe_ListBox
136
+ webse_radiolist.py # WebSe_RadioList
137
+ webse_label.py # WebSe_Label
138
+ webse_link.py # WebSe_Link
139
+ webse_table.py # WebSe_Table
140
+ webse_multilinefield.py
141
+ host/
142
+ browsercontrol/ # BrowserControl + UrlBar
143
+ locators/ # Built-in YAML locators (Chrome, WidgetsDemo, ...)
144
+ tests/
145
+ robot/ # 53 Robot Framework integration tests
146
+ docs/
147
+ ```
148
+
149
+ ---
150
+
151
+ ## License
152
+
153
+ - **Community** (non-commercial): see [LICENSE](LICENSE)
154
+ - **Commercial**: see [COMMERCIAL_LICENSE.md](COMMERCIAL_LICENSE.md)
155
+ - **FAQ**: [docs/license_faq.md](docs/license_faq.md)
@@ -0,0 +1,55 @@
1
+ [build-system]
2
+ requires = ["setuptools>=65", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "robotframework-okw-web-selenium"
7
+ version = "0.3.0"
8
+ description = "Selenium driver for OKW4Robot - Web GUI test automation with Chrome, Firefox and more."
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ keywords = ["robotframework", "testing", "testautomation", "gui", "selenium", "okw", "web"]
12
+ dependencies = [
13
+ "robotframework-okw4robot>=0.4.0",
14
+ "robotframework-seleniumlibrary>=6.0",
15
+ "selenium>=4.0",
16
+ ]
17
+ authors = [
18
+ { name = "Zoltán Hrabovszki" }
19
+ ]
20
+ license = { file = "LICENSE" }
21
+ classifiers = [
22
+ "Development Status :: 4 - Beta",
23
+ "Operating System :: OS Independent",
24
+ "Programming Language :: Python :: 3",
25
+ "Programming Language :: Python :: 3 :: Only",
26
+ "Programming Language :: Python :: 3.10",
27
+ "Programming Language :: Python :: 3.11",
28
+ "Programming Language :: Python :: 3.12",
29
+ "Programming Language :: Python :: 3.13",
30
+ "Framework :: Robot Framework",
31
+ "Framework :: Robot Framework :: Library",
32
+ "Topic :: Software Development :: Testing",
33
+ ]
34
+
35
+ [project.urls]
36
+ Repository = "https://github.com/Hrabovszki1023/robotframework-okw-web-selenium"
37
+ Homepage = "https://github.com/Hrabovszki1023/robotframework-okw-web-selenium"
38
+ Documentation = "https://hrabovszki1023.github.io/robotframework-okw-web-selenium/"
39
+
40
+ [tool.setuptools]
41
+ package-dir = {"" = "src"}
42
+ include-package-data = true
43
+
44
+ [tool.setuptools.packages.find]
45
+ where = ["src"]
46
+ namespaces = false
47
+
48
+ [tool.setuptools.package-data]
49
+ okw_web_selenium = ["locators/*.yaml"]
50
+
51
+ [project.optional-dependencies]
52
+ dev = ["pytest>=7.0"]
53
+
54
+ [tool.pytest.ini_options]
55
+ testpaths = ["tests"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,3 @@
1
+ from .library import OkwWebSeleniumLibrary
2
+
3
+ __all__ = ["OkwWebSeleniumLibrary"]