Naar aanleiding van:
![[RobotFramework - Mocken met browser library#^7a5fe5]]
**Gerelateerd:** [[RobotFramework - Mocken met browser library]]
> [!info]- TL;DR — Browser starten
Gebruik meestal deze drie stappen samen:
> ```robot
> New Browser chromium
> New Context baseURL=https://test.mijnsite.nl
> New Page /login
> ```
> New Browser start de browser
> - New Context maakt een schone sessie (zoals incognito)
> - New Page opent een nieuwe tab in die sessie
>
> ✅ Zo begin je elke test schoon en gecontroleerd
> ➡️ Snelle test? Gebruik: New Page https://example.com
# Browser Keywords
| Keyword | Wat doet het? |
| ------------- | --------------------------------------------------------------------- |
| `New Browser` | Start een nieuw browserproces (bijv. Chromium) |
| `New Context` | Start een nieuwe, schone browser-sessie (zoals een incognito venster) |
| `New Page` | Opent een nieuwe tab (pagina) binnen de huidige context |
Met deze drie keywords kan je webtest beginnen
```robot
Open een browser
[Arguments] ${baseURL}=${URL} ${headless}=${HEADLESS} ${devtools}=${DEVTOOLS}
Browser.New Browser chromium headless=${headless} devtools=${devtools}
Browser.New Context baseURL=${baseURL} viewport={'width': 1920, 'height': 1080}
Browser.New Page about:blank
Browser.Wait For Load State domcontentloaded 2s
```
Bron: [Browser - Browser, Context and Page](https://marketsquare.github.io/robotframework-browser/Browser.html#Browser%2C%20Context%20and%20Page)
## `New Browser` keyword
Playwright komt standaard al met ingebouwde web drivers.
Met het keyword `New Browser` kun je een nieuwe browser openen met specifieke opties.
Dit is ook alles wat er gebeurd, je kan nu nog niet naar een pagina navigeren bijvoorbeeld.
> [!info]- Interessante parameters
> ### Parameter: `browser`
> Chrome is de default browser. Andere opties zijn firefox en webkit.
>
> | Browser | Browser met deze engine |
> | ---------- | ------------------------------------------------- |
> | `chromium` | Google Chrome, Microsoft Edge (since 2020), Opera |
> | `firefox` | Mozilla Firefox |
> | `webkit` | Apple Safari, Mail, AppStore on MacOS and iOS |
>
> ### Parameter: `headless`
> Standaard wordt de browser in headless modus gestart, wat betekent dat er geen GUI wordt weergegeven. Dit is handig voor geautomatiseerde tests. Als je tijdens het ontwikkelen de browser wilt zien, kun je `headless=False` instellen.
> ### Parameter: `devtools`
> Door `devtools=True` in te stellen, worden de ontwikkelaarstools geopend bij het starten van de browser, wat nuttig kan zijn tijdens het ontwikkelen en debuggen van tests.
### Bronnen
- [Browser Library - New Browser](https://marketsquare.github.io/robotframework-browser/Browser.html#New%20Browser)
- [Playwright - Browser](https://playwright.dev/docs/api/class-browser)
## `New Context` Keyword
Met het `New Context` start je een aparte browser-sessie, **een nieuw venster**. Denk aan een nieuw privé-venster (incognito) in je browser: wat je daar doet, staat helemaal los van andere venster.
Je kunt hiermee meerdere, volledig gescheiden sessies naast elkaar draaien. Handig als je bijvoorbeeld meerdere gebruikers tegelijk wilt testen, zonder dat cookies of inloggegevens elkaar beïnvloeden.
### Belangrijk om te weten:
- Als een pagina een popup opent (bijv. via `window.open`), dan hoort die popup nog steeds bij dezelfde context.
- Met `browser.newContext()` maak je een tijdelijke, schone sessie aan. Alles wat je doet (cookies, localStorage, etc.) wordt **niet** opgeslagen op de harde schijf.
- Pagina’s in twee **verschillende contexten** delen géén cookies, sessies of profielinstellingen.
- Wil je dat pagina’s binnen dezelfde testsuite hun status **delen** (zoals ingelogd blijven), gebruik dan **één context** en open die in de `Suite Setup` met `New Context`.
- Dit is ideaal voor testen: je start elke keer met een frisse "browser".
> [!info]- Interessante parameters
> ### Parameter: `BaseUrl`
> ```robot
> Open een browser
> New Browser
> New Context baseUrl=https://test.mijnsite.nl
> New Page Go To /login # Gaat naar https://test.mijnsite.nl/login
> ```
> Voordeel: je hoeft niet telkens het volledige URL te typen.
**Bronnen:**
- [Playwright - BrowserContext](https://playwright.dev/docs/api/class-browsercontext)
- [Browser Library - New Context](https://marketsquare.github.io/robotframework-browser/Browser.html#New%20Context)
## `New Page` Keyword
Dit keyword opent een nieuw tabblad in een bestaande browser context dus ze delen sessiegegevens zoals cookies en ingelogde status.
De New Page wordt **altijd geopend in de actieve context** — dus de laatst aangemaakte context via New Context.
### Bronnen:
- [Browser - New Page](https://marketsquare.github.io/robotframework-browser/Browser.html#New%20Page)
- [Playwright - New Page](https://playwright.dev/docs/api/class-browsercontext#browser-context-new-page)
## `Open Browser` Keyword
Als je **snel aan de slag wil zonder context en pagina apart te openen**, dan kun je ook dit doen:
``` robot
New Page https://example.com
```
Dat doet **alles in één keer**:
- Opent browser (als die nog niet open is)
- Maakt een context aan
- Maakt een pagina/tab aan
- Gaat naar de URL
> [!warning] Let op:
> Je hebt dan **geen controle over contexten**. Voor echte, schone testen is het beter om contexten **expliciet aan te maken**. Gebruik dan altijd `New Browser`, `New Context`, `New Page`.
# Best Practices
- Zet je resolutie vast, zo krijg je geen problemen met elementen die net buiten beeld vallen doordat je test op een scherm uitgevoerd wordt met een lagere resolutie
Bijvoorbeeld:
` New Context viewport={'width': 1920, 'height': 1080}`
- Start voor elke test een nieuwe browser zodat elke test 'schoon' begint.
# Browser vs SeleniumLibrary
Dat lees je hier: [[Robot Framework - Browser Library vs SeleniumLibrary#Openen van een browser]]