Se ha denunciado esta presentación.
Se está descargando tu SlideShare. ×

Robot framework en Browser Library

Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Próximo SlideShare
Introductie robot framework
Introductie robot framework
Cargando en…3
×

Eche un vistazo a continuación

1 de 27 Anuncio
Anuncio

Más Contenido Relacionado

Similares a Robot framework en Browser Library (20)

Más reciente (20)

Anuncio

Robot framework en Browser Library

  1. 1. Browser Library (Robot Framework & Playwright) Christian Bos & Guido Peters | RF meetup 23-09-2021
  2. 2. Playwright • “Nieuw” tool voor Web testing • ontwikkeld door Microsoft • op basis van Javascript (node.js) • clone van Puppeteer • “Automate without trade-offs”
  3. 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. 4. Playwright • Krachtige automatiserings opties • ondersteunt Shadow-DOM! • file down-/uploads • iFrames • dark mode • netwerk interception (mocking en stubbing) • native input events
  5. 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. 6. Playwright – een voorbeeld
  7. 7. Playwright – een voorbeeld
  8. 8. 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
  9. 9. 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
  10. 10. Browser Library – tech stack • Naast Python ook node.js nodig • Via gRPC van Python naar Javascript • Devtools protocol
  11. 11. 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
  12. 12. Browser Library – browser control Selenium Library Open Browser Browser New Browser New Context New Page • Meer controle -> meer snelheid • Automatic closing
  13. 13. Browser Library – selectors • CSS (standaard) • XPath • alles wat start met // of .. • Text • ondersteunt RegEx -> tekst=/.*ello/ • Id • Combinatie • text=Hello >> xpath=../.. >> css=.select_button
  14. 14. 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 • ...
  15. 15. 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
  16. 16. Browser Library – assertions • Alle getter keywords ondersteunen assertions:
  17. 17. 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)
  18. 18. Browser Library – tips & tricks • Default browser is headless • GUI is mogelijk
  19. 19. 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
  20. 20. 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
  21. 21. 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
  22. 22. 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)
  23. 23. 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
  24. 24. 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)
  25. 25. 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
  26. 26. 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

×