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.
- robotframework_okw_web_selenium-0.3.0/LICENSE +36 -0
- robotframework_okw_web_selenium-0.3.0/PKG-INFO +222 -0
- robotframework_okw_web_selenium-0.3.0/README.md +155 -0
- robotframework_okw_web_selenium-0.3.0/pyproject.toml +55 -0
- robotframework_okw_web_selenium-0.3.0/setup.cfg +4 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/__init__.py +3 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/adapters/__init__.py +0 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/adapters/selenium_web.py +209 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/keywords/__init__.py +0 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/keywords/web_keywords.py +28 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/library.py +55 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/locators/Chrome.yaml +14 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/locators/Firefox.yaml +14 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/locators/__init__.py +0 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/__init__.py +43 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/host/__init__.py +0 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/host/browsercontrol/BrowserControl.py +10 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/host/browsercontrol/UrlBar.py +11 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/host/browsercontrol/__init__.py +2 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_base.py +256 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_button.py +11 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_checkbox.py +20 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_combobox.py +103 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_label.py +10 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_link.py +11 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_listbox.py +38 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_multilinefield.py +11 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_radiolist.py +114 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_table.py +90 -0
- robotframework_okw_web_selenium-0.3.0/src/okw_web_selenium/widgets/webse_textfield.py +21 -0
- robotframework_okw_web_selenium-0.3.0/src/robotframework_okw_web_selenium.egg-info/PKG-INFO +222 -0
- robotframework_okw_web_selenium-0.3.0/src/robotframework_okw_web_selenium.egg-info/SOURCES.txt +33 -0
- robotframework_okw_web_selenium-0.3.0/src/robotframework_okw_web_selenium.egg-info/dependency_links.txt +1 -0
- robotframework_okw_web_selenium-0.3.0/src/robotframework_okw_web_selenium.egg-info/requires.txt +6 -0
- 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"]
|
|
File without changes
|