🕵️ SicherheitslückenHak5: Hackers Just Poisoned the Rust Supply Chain | Threat Wire(01.09.2026 um 14:00 Uhr)
🕵️ SicherheitslückenHak5: Hackers Found a Way Into Humanoid Robots | Threat Wire(04.09.2026 um 15:04 Uhr)
🔧 AI Nachrichten Bits und so #1021 (Passwort für Laufwerk)(31.08.2026 um 22:15 Uhr)
🔧 AI Nachrichten Bits und so #1022 (Wie Weißbier)(06.09.2026 um 20:39 Uhr)
🍏 iOS / Mac OSHue-App 6.0 ist da: das sind die Neuerungen(07.09.2026 um 17:21 Uhr)
🕵️ SicherheitslückenHak5: Hackers Just Poisoned the Rust Supply Chain | Threat Wire(01.09.2026 um 14:00 Uhr)
🕵️ SicherheitslückenHak5: Hackers Found a Way Into Humanoid Robots | Threat Wire(04.09.2026 um 15:04 Uhr)
🔧 AI Nachrichten Bits und so #1021 (Passwort für Laufwerk)(31.08.2026 um 22:15 Uhr)
🔧 AI Nachrichten Bits und so #1022 (Wie Weißbier)(06.09.2026 um 20:39 Uhr)
🍏 iOS / Mac OSHue-App 6.0 ist da: das sind die Neuerungen(07.09.2026 um 17:21 Uhr)

🔧 Programmierung 🕛 kürzlich 3 Min Lesezeit
0

Stop Using Raw WebDriver in Robot Framework

↗ Quelle (dev.to)
🗣️ Stimme:
📑 Inhaltsübersicht

A lot of Robot Framework projects still look like plain Selenium scripts with .robot file extensions.



Someone imports webdriver, creates driver = webdriver.Chrome(), then calls find_element and send_keys in Python helpers. Robot Framework runs the suite, but readable keywords, shared libraries, and consistent waits never show up in the tests.



If you already use , you do not need the raw WebDriver API. SeleniumLibrary gives you high-level keywords. The Page Object Model gives you structure. Together they keep tests short and UI changes localized.



We published a small MIT template that shows the layout: — clone it, run four tests, fork the folder structure.






What breaks when you mix in raw WebDriver






CODE
driver = webdriver.Chrome()
driver.find_element(By.ID, "user-name").send_keys("standard_user")
driver.find_element(By.ID, "password").send_keys("secret_sauce")
driver.find_element(By.ID, "login-button").click()






Fine for a script. Painful in a growing suite.



Locators spread across helpers and test files. Waits become time.sleep(2) in one place and missing in another. You end up maintaining SeleniumLibrary and a parallel WebDriver stack. CI fails on a Tuesday night and you are not sure which path opened the browser.






Before and after




























Before After
driver.find_element(...).send_keys(...) Login With Valid Credentials ${VALID_USER} ${VALID_PASSWORD}
Locators in every file
LoginLocators.USERNAME in one module
Ad-hoc sleeps
wait_until_element_is_visible in BasePage.click()
Two browser stacks One SeleniumLibrary instance per suite





Four layers

































Layer Job Example
Locators Selectors per screen login_locators.py
BasePage Shared waits and actions
click(), enter_text()
Page library Screen keywords LoginPage.login()
Robot test Scenario only Inventory Should Be Visible


Folder layout in the repo:




CODE
resources/locators/   → selectors
pages/ → Python page libraries
tests/ → thin .robot files









Locators stay in one place






CODE
class LoginLocators:
USERNAME = "id:user-name"
PASSWORD = "id:password"
SUBMIT = "id:login-button"






Prefer stable attributes like data-test when the app exposes them.






BasePage owns the waits






CODE
def click(self, locator):
self.seleniumlib.wait_until_element_is_visible(locator)
self.seleniumlib.click_element(locator)

@property
def seleniumlib(self):
return BuiltIn().get_library_instance("SeleniumLibrary")






Import SeleniumLibrary once in common.resource. Page objects look up that same instance — no driver argument passed between keywords. If you create driver = webdriver.Chrome() outside SeleniumLibrary, your page keywords will not see that browser.






A thin test






CODE
*** Test Cases ***
Valid Login
Login With Valid Credentials ${VALID_USER} ${VALID_PASSWORD}
Inventory Should Be Visible






No locators. No driver setup. Browser open/close in Test Setup / Test Teardown.






Quick start






CODE
git clone https://github.com/gitoza-io/rf-seleniumlibrary-pageobject-template.git
cd rf-seleniumlibrary-pageobject-template
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
robot --pythonpath . --outputdir results tests/






Use --pythonpath . from the repo root so pages.* imports resolve. Four passing tests = layout is wired.






Migrating without a rewrite




  1. Move locators to resources/locators/

  2. Add BasePage with click / enter_text

  3. Wrap login as the first page library

  4. Import SeleniumLibrary once in common.resource

  5. Rewrite one .robot file, delete webdriver imports from its helpers



Repeat screen by screen. Leave the rest alone until you touch that feature.



Playwright and Cypress are valid for greenfield work. Plenty of teams still run RF and SeleniumLibrary in production — for them, dropping find_element for Page Objects is a low-risk upgrade that pays off on the next UI refactor.






Template repo: github.com/gitoza-io/rf-seleniumlibrary-pageobject-template

Vollständiger Original-Bericht
Ausführliche Details, Code-Beispiele & Hersteller-Stellungnahme auf dev.to.
↗ Original-Artikel auf dev.to lesen
Wie bewertest du diesen Beitrag?
1 Klick Feedback
Teilen mit Netzwerk & Team:

Community-Analysen & Experten-Meinungen 0

Verfasse deine eigene Analyse, teile Workarounds oder diskutiere diesen Vorfall im Blog.
Noch keine Community-Analyse verfasst. Markiere einen Textabschnitt oder klicke oben auf Eigene Analyse verfassen“!
Community Pulse: Relevanz-Einschätzung
1 Klick Experten-Votum
🔴 Akute Relevanz 0%
🟡 In Evaluierung 0%
🟢 Keine Auswirkung 0%
Spannende Innovation 0%
Verwandte Story-Cluster & Quellen (Vektor-KI)
Port 8095 Engine
1 Quelle
Hackers Just Poisoned the Rust Supply Chain | Threat Wire
1 Quelle
Hackers Found a Way Into Humanoid Robots | Threat Wire
1 Quelle
Bits und so #1021 (Passwort für Laufwerk)
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten Stop Using Raw WebDriver in Robot Framework

Thematisch verwandte Begriffe: Stop, Using, WebDriver, Robot · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...