SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
Browser Library
(Robot Framework & Playwright)
Christian Bos & Guido Peters | RF meetup 23-09-2021
Playwright
• “Nieuw” tool voor Web testing
• ontwikkeld door Microsoft
• op basis van Javascript (node.js)
• clone van Puppeteer
• “Automate without trade-offs”
Playwright
• Ondersteuning voor browsers
• meegeleverd: Chrome, Egde (Chromium) en Webkit
• mobile testing: device emulation
• zowel headless als headed
• Snelle en betrouwbare testuitvoer
• auto-waiting bij elementen
• isolatie testuitvoer dmv context
• combinatie van locators (CSS, XPath) en strings
Playwright
• Krachtige automatiserings opties
• ondersteunt Shadow-DOM!
• file down-/uploads
• iFrames
• dark mode
• netwerk interception (mocking en stubbing)
• native input events
Selenium vs. Playwright
Selenium
• java(script), python,
.net
• Webdriver protocol
(remote)
• no automatic waiting
• geen video capture
• geen device emulation
• geen network
interception
Playwright
• java(script), python,
.net
• Chrome Devtools Protocol
(native)
• automatic waiting
• video capture
• device emulation
• network interception
Playwright – een voorbeeld
Playwright – een voorbeeld
Browser Library
• Nieuwe web testing library o.b.v. Playwright
• node.js package (Microsoft)
• ‘Find real errors instead of fixing your
tests...’
• User comments:
• sneller (ca. 50%)
• minder code (simpelere keywords)
• minder false positives
Selenium vs. Browser Library
SeleniumLibrary
• Gebaseerd op Selenium
• Heeft losse browsers en
drivers nodig
• Een keyword doet een ding
goed
• Sleeps en wait until...
• Groter aantal browsers en
versies
Browser Library
• Gebaseerd op Playwright
• Heeft eigen browsers, geen
aparte drivers nodig
• Dynamische keywords met
built-in assertions en/of
polling
• Geen sleeps en wait
until...
• Beperkt aantal browsers en
versies
Browser Library – tech stack
• Naast Python
ook node.js
nodig
• Via gRPC van
Python naar
Javascript
• Devtools
protocol
Browser Library – concepten
• Browser
• bevat built-in binaries voor browsers
• kan één of meerdere contexten bevatten
• Context
• set van onafhankelijke incognito pagina’s
• delen van cookies, sessies en profiel
• Page
• bevat de daadwerkelijke content
• browserhistorie
Browser Library – browser control
Selenium
Library Open Browser
Browser New Browser New Context New Page
• Meer controle -> meer snelheid
• Automatic closing
Browser Library – selectors
• CSS (standaard)
• XPath
• alles wat start met // of ..
• Text
• ondersteunt RegEx -> tekst=/.*ello/
• Id
• Combinatie
• text=Hello >> xpath=../.. >> css=.select_button
Browser Library – implicit waiting
• Standaard waiting mechanisme
• standaard functionaliteit van Playwright
• wachten voor uitvoeren actie op elementen
• keywords falen pas na time-out
• Element moet klaar zijn voor interactie
• vindbaar in DOM
• visible
• stable
• enabled
• ...
Browser Library – waiting
• Wachten op assertions
• automatische retry en pas falen na time-out
• wachttijd instellen bij import
• Keywords voor wachten
• Wait Until Elements State
• Wait For Response
• Wait Until Network Is Idle
Browser Library – assertions
• Alle getter keywords ondersteunen assertions:
Browser Library – assertions
• Assertion engine
• alle assertions volgen dezelfde syntax (assertion
engine)
• automatische retry en pas falen na time-out
• Assertions zijn niet verplicht
• alle keywords retourneren, ongeacht assertion
• Browser lib. converteert geen types
• let op return type ->
integer (Get Element Count) vs. string (Get Text)
Browser Library – tips & tricks
• Default browser is headless
• GUI is mogelijk
Browser Library – tips & tricks
• Browser open houden na runnen script
• gebruik keyword ‘Pause Execution’ (dialog lib.)
• Presenter mode (enable_presenter_mode=True)
• optie bij import library
• slowMo en kleine pauze aan het einde
• automatisch highlighten elementen
Robocorp Recorder: een demo
• Chrome extensie
• fork van oudere Robotcorder
• opnemen webacties in RF format
• ondersteunt zowel SeleniumLibrary als Browser lib.
• Slechts bedoeld als eerste aanzet
Van Selenium naar Playwright?
• Niet in alle scenario’s raadzaam
• frequentie van uitvoer vs. stabiliteit omgeving
• TA code wordt niet/beperkt aangepast
• Bij Kadaster veel winst in
• doorlooptijd (ruim 50% sneller)
• leesbaarheid en onderhoudbaarheid van code
• mogelijkheid tot gebruik externe packages
Van Selenium naar Playwright!
• Eerste stap:
• ‘Oude’ keywords uitfaseren -> mapping keywords in
resource file
• meest simpele keywords 1:1
• Daarna:
• assertions herschrijven
• wait-until constructies vervangen
• code rondom headless draaien aanpassen (= standaard)
Meest gebruikte keywords
SeleniumLibrary
• Open Browser
• Go To
• Click Element
• Input Text /Password
• Get Text
• Get Element Count
• n/a
• Select From List By *
• Wait Until Element Is *
Browser Library
• New Page (Open Browser*)
• Go To
• Click
• Type Text /Secret
• Get Text
• Get Element Count
• Check Checkbox
• Select Options By
• Wait For Elements State
Browser Library - extensions
• Node.js biedt een veelvoud aan nieuwe
toepassingen binnen Robot Framework
• Voorbeelden in de praktijk:
• Pixelmatch(verificatie van afbeeldingen)
• Axe-Core (Digi-toegankelijkheid)
Handige links
• Playwright
• https://playwright.dev/
• Browser Library
• https://robotframework-browser.org/
• https://www.youtube.com/watch?v=3BNVS6uiFeo&t=1620s
• https://www.youtube.com/watch?v=yc1EMMEDPIM
• Robocorp Recorder
• https://robocorp.com/docs/developer-tools/other-editors/recorder
Handige links
• Resourcefile
• https://gist.github.com/leeuwe/032438177626d8751bc2a
ff7955d0adc
• Axe-Core extension
• https://github.com/MarketSquare/robotframework-
browser-extensions/tree/main/Axe-Core
• Pixelmatch
• https://github.com/mapbox/pixelmatch

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Introduction to Robot Framework
Introduction to Robot FrameworkIntroduction to Robot Framework
Introduction to Robot Framework
 
Utilizando a API do Magento 2
Utilizando a API do Magento 2Utilizando a API do Magento 2
Utilizando a API do Magento 2
 
Robot Framework
Robot FrameworkRobot Framework
Robot Framework
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
RabbitMQ
RabbitMQRabbitMQ
RabbitMQ
 
Alfresco DevCon 2019: Encryption at-rest and in-transit
Alfresco DevCon 2019: Encryption at-rest and in-transitAlfresco DevCon 2019: Encryption at-rest and in-transit
Alfresco DevCon 2019: Encryption at-rest and in-transit
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
Apache Camel v3, Camel K and Camel Quarkus
Apache Camel v3, Camel K and Camel QuarkusApache Camel v3, Camel K and Camel Quarkus
Apache Camel v3, Camel K and Camel Quarkus
 
Docker and Kubernetes 101 workshop
Docker and Kubernetes 101 workshopDocker and Kubernetes 101 workshop
Docker and Kubernetes 101 workshop
 
Introduction To RabbitMQ
Introduction To RabbitMQIntroduction To RabbitMQ
Introduction To RabbitMQ
 
RunDeck
RunDeckRunDeck
RunDeck
 
Intro to containerization
Intro to containerizationIntro to containerization
Intro to containerization
 
Api security
Api security Api security
Api security
 
Mqtt overview (iot)
Mqtt overview (iot)Mqtt overview (iot)
Mqtt overview (iot)
 
Docker 101 - Nov 2016
Docker 101 - Nov 2016Docker 101 - Nov 2016
Docker 101 - Nov 2016
 
Kubernetes security
Kubernetes securityKubernetes security
Kubernetes security
 
Kong Workshop.pdf
Kong Workshop.pdfKong Workshop.pdf
Kong Workshop.pdf
 
Understanding Kubernetes
Understanding KubernetesUnderstanding Kubernetes
Understanding Kubernetes
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetes
 
Kubernetes - Security Journey
Kubernetes - Security JourneyKubernetes - Security Journey
Kubernetes - Security Journey
 

Semelhante a Robot framework en Browser Library

Projectpaas drupaljam 2013 rotterdam
Projectpaas drupaljam 2013 rotterdamProjectpaas drupaljam 2013 rotterdam
Projectpaas drupaljam 2013 rotterdam
Bert Boerland
 
PFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsPFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele tests
Richard Tuin
 

Semelhante a Robot framework en Browser Library (20)

Introductie robot framework
Introductie robot frameworkIntroductie robot framework
Introductie robot framework
 
Een goede DEV omgeving opzetten
Een goede DEV omgeving opzettenEen goede DEV omgeving opzetten
Een goede DEV omgeving opzetten
 
Rf meetup 20210412 robo_con
Rf meetup 20210412 robo_conRf meetup 20210412 robo_con
Rf meetup 20210412 robo_con
 
Cypress meetup v2
Cypress meetup v2Cypress meetup v2
Cypress meetup v2
 
HTML5 Overview
HTML5 OverviewHTML5 Overview
HTML5 Overview
 
Projectpaas drupaljam 2013 rotterdam
Projectpaas drupaljam 2013 rotterdamProjectpaas drupaljam 2013 rotterdam
Projectpaas drupaljam 2013 rotterdam
 
HTML5 (Dutch)
HTML5 (Dutch)HTML5 (Dutch)
HTML5 (Dutch)
 
Rf meetup 25feb2020 robo_con
Rf meetup 25feb2020 robo_conRf meetup 25feb2020 robo_con
Rf meetup 25feb2020 robo_con
 
The power of joomla!
The power of joomla!The power of joomla!
The power of joomla!
 
The power of joomla!
The power of joomla!The power of joomla!
The power of joomla!
 
Web Application Security; Hacking your way in!
Web Application Security; Hacking your way in!Web Application Security; Hacking your way in!
Web Application Security; Hacking your way in!
 
Node.js: waarom en hoe
Node.js: waarom en hoeNode.js: waarom en hoe
Node.js: waarom en hoe
 
EPiServer - Create dojo property
EPiServer - Create dojo propertyEPiServer - Create dojo property
EPiServer - Create dojo property
 
Why Drupal Is So Slow
Why Drupal Is So SlowWhy Drupal Is So Slow
Why Drupal Is So Slow
 
Mijn site beveiliging
Mijn site beveiligingMijn site beveiliging
Mijn site beveiliging
 
Introductie robot framework
Introductie robot frameworkIntroductie robot framework
Introductie robot framework
 
Sitecore - Onder de motorkop van ParTechIT.nl
Sitecore - Onder de motorkop van ParTechIT.nlSitecore - Onder de motorkop van ParTechIT.nl
Sitecore - Onder de motorkop van ParTechIT.nl
 
PFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsPFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele tests
 
Hosted Security Online Backup supporttraining
Hosted Security Online Backup supporttrainingHosted Security Online Backup supporttraining
Hosted Security Online Backup supporttraining
 
TYPO3 Congres 2012 - Aan de slag met TYPO3 Extbase en Fluid
TYPO3 Congres 2012 - Aan de slag met TYPO3 Extbase en FluidTYPO3 Congres 2012 - Aan de slag met TYPO3 Extbase en Fluid
TYPO3 Congres 2012 - Aan de slag met TYPO3 Extbase en Fluid
 

Mais de christiantester (6)

Meetup DB testing met SoapUI en Robot Framework.pdf
Meetup DB testing met SoapUI en Robot Framework.pdfMeetup DB testing met SoapUI en Robot Framework.pdf
Meetup DB testing met SoapUI en Robot Framework.pdf
 
Robo con 2021
Robo con 2021Robo con 2021
Robo con 2021
 
Test automation in een BDD context
Test automation in een BDD contextTest automation in een BDD context
Test automation in een BDD context
 
Robot framework en ci v2
Robot framework en ci v2Robot framework en ci v2
Robot framework en ci v2
 
Rest api testing
Rest api testingRest api testing
Rest api testing
 
Robocon @ Immune-it
Robocon @ Immune-itRobocon @ Immune-it
Robocon @ Immune-it
 

Robot framework en Browser Library

  • 1. Browser Library (Robot Framework & Playwright) Christian Bos & Guido Peters | RF meetup 23-09-2021
  • 2. Playwright • “Nieuw” tool voor Web testing • ontwikkeld door Microsoft • op basis van Javascript (node.js) • clone van Puppeteer • “Automate without trade-offs”
  • 3. Playwright • Ondersteuning voor browsers • meegeleverd: Chrome, Egde (Chromium) en Webkit • mobile testing: device emulation • zowel headless als headed • Snelle en betrouwbare testuitvoer • auto-waiting bij elementen • isolatie testuitvoer dmv context • combinatie van locators (CSS, XPath) en strings
  • 4. Playwright • Krachtige automatiserings opties • ondersteunt Shadow-DOM! • file down-/uploads • iFrames • dark mode • netwerk interception (mocking en stubbing) • native input events
  • 5. Selenium vs. Playwright Selenium • java(script), python, .net • Webdriver protocol (remote) • no automatic waiting • geen video capture • geen device emulation • geen network interception Playwright • java(script), python, .net • Chrome Devtools Protocol (native) • automatic waiting • video capture • device emulation • network interception
  • 6. Playwright – een voorbeeld
  • 7. Playwright – een voorbeeld
  • 8.
  • 9. Browser Library • Nieuwe web testing library o.b.v. Playwright • node.js package (Microsoft) • ‘Find real errors instead of fixing your tests...’ • User comments: • sneller (ca. 50%) • minder code (simpelere keywords) • minder false positives
  • 10. Selenium vs. Browser Library SeleniumLibrary • Gebaseerd op Selenium • Heeft losse browsers en drivers nodig • Een keyword doet een ding goed • Sleeps en wait until... • Groter aantal browsers en versies Browser Library • Gebaseerd op Playwright • Heeft eigen browsers, geen aparte drivers nodig • Dynamische keywords met built-in assertions en/of polling • Geen sleeps en wait until... • Beperkt aantal browsers en versies
  • 11. Browser Library – tech stack • Naast Python ook node.js nodig • Via gRPC van Python naar Javascript • Devtools protocol
  • 12. Browser Library – concepten • Browser • bevat built-in binaries voor browsers • kan één of meerdere contexten bevatten • Context • set van onafhankelijke incognito pagina’s • delen van cookies, sessies en profiel • Page • bevat de daadwerkelijke content • browserhistorie
  • 13. Browser Library – browser control Selenium Library Open Browser Browser New Browser New Context New Page • Meer controle -> meer snelheid • Automatic closing
  • 14. Browser Library – selectors • CSS (standaard) • XPath • alles wat start met // of .. • Text • ondersteunt RegEx -> tekst=/.*ello/ • Id • Combinatie • text=Hello >> xpath=../.. >> css=.select_button
  • 15. Browser Library – implicit waiting • Standaard waiting mechanisme • standaard functionaliteit van Playwright • wachten voor uitvoeren actie op elementen • keywords falen pas na time-out • Element moet klaar zijn voor interactie • vindbaar in DOM • visible • stable • enabled • ...
  • 16. Browser Library – waiting • Wachten op assertions • automatische retry en pas falen na time-out • wachttijd instellen bij import • Keywords voor wachten • Wait Until Elements State • Wait For Response • Wait Until Network Is Idle
  • 17. Browser Library – assertions • Alle getter keywords ondersteunen assertions:
  • 18. Browser Library – assertions • Assertion engine • alle assertions volgen dezelfde syntax (assertion engine) • automatische retry en pas falen na time-out • Assertions zijn niet verplicht • alle keywords retourneren, ongeacht assertion • Browser lib. converteert geen types • let op return type -> integer (Get Element Count) vs. string (Get Text)
  • 19. Browser Library – tips & tricks • Default browser is headless • GUI is mogelijk
  • 20. Browser Library – tips & tricks • Browser open houden na runnen script • gebruik keyword ‘Pause Execution’ (dialog lib.) • Presenter mode (enable_presenter_mode=True) • optie bij import library • slowMo en kleine pauze aan het einde • automatisch highlighten elementen
  • 21. Robocorp Recorder: een demo • Chrome extensie • fork van oudere Robotcorder • opnemen webacties in RF format • ondersteunt zowel SeleniumLibrary als Browser lib. • Slechts bedoeld als eerste aanzet
  • 22. Van Selenium naar Playwright? • Niet in alle scenario’s raadzaam • frequentie van uitvoer vs. stabiliteit omgeving • TA code wordt niet/beperkt aangepast • Bij Kadaster veel winst in • doorlooptijd (ruim 50% sneller) • leesbaarheid en onderhoudbaarheid van code • mogelijkheid tot gebruik externe packages
  • 23. Van Selenium naar Playwright! • Eerste stap: • ‘Oude’ keywords uitfaseren -> mapping keywords in resource file • meest simpele keywords 1:1 • Daarna: • assertions herschrijven • wait-until constructies vervangen • code rondom headless draaien aanpassen (= standaard)
  • 24. Meest gebruikte keywords SeleniumLibrary • Open Browser • Go To • Click Element • Input Text /Password • Get Text • Get Element Count • n/a • Select From List By * • Wait Until Element Is * Browser Library • New Page (Open Browser*) • Go To • Click • Type Text /Secret • Get Text • Get Element Count • Check Checkbox • Select Options By • Wait For Elements State
  • 25. Browser Library - extensions • Node.js biedt een veelvoud aan nieuwe toepassingen binnen Robot Framework • Voorbeelden in de praktijk: • Pixelmatch(verificatie van afbeeldingen) • Axe-Core (Digi-toegankelijkheid)
  • 26. Handige links • Playwright • https://playwright.dev/ • Browser Library • https://robotframework-browser.org/ • https://www.youtube.com/watch?v=3BNVS6uiFeo&t=1620s • https://www.youtube.com/watch?v=yc1EMMEDPIM • Robocorp Recorder • https://robocorp.com/docs/developer-tools/other-editors/recorder
  • 27. Handige links • Resourcefile • https://gist.github.com/leeuwe/032438177626d8751bc2a ff7955d0adc • Axe-Core extension • https://github.com/MarketSquare/robotframework- browser-extensions/tree/main/Axe-Core • Pixelmatch • https://github.com/mapbox/pixelmatch