SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Websites testen met
Behave en Selenium
Fedict – Brussel – 11 oktober 2013

© Fedict 2013. All rights reserved
Agenda

© Fedict 2013. All rights reserved
Agenda


Websites testen



Selenium



Splinter



Behave



(Demo)



Vragen

© Fedict 2013. All rights reserved | p. 3
Websites testen

© Fedict 2013. All rights reserved
Verschillende soorten (complementair)


Schaalbaarheid / load testing


Vb: JMeter



Beveiliging



Toegankelijkheid




Valideren HTML




Vb: AnySurfer
Vb: W3C Markup Validator

Via browser / eindgebruiker test


Vb: Selenium

© Fedict 2013. All rights reserved | p. 5
Selenium

© Fedict 2013. All rights reserved
Selenium


Automatiseren browser acties




Open source




Niet bedoeld voor load testing, HTML validaties...
http://www.seleniumhq.org

Verzameling tools





Selenium IDE (Firefox plugin)
(Selenium Remote Control)
Selenium WebDriver
Selenium Grid (testen op meerdere servers tegelijk)

© Fedict 2013. All rights reserved | p. 7
Selenium Web Driver


Sturen browser






Ondersteuning voor meerdere browsers






Openen en sluiten browser
Openen pagina, klikken op buttons, invullen velden, ...
Testen van aanwezigheid elementen, tekst ...
Firefox 3.6+, HTMLUnit
Chrome 12+, IE 7+, Opera 8+
IOS, Android browser

Via verschillende programmeertalen



Java, C#, Python, Ruby
(3rd party) PHP, Perl, …

© Fedict 2013. All rights reserved | p. 8
Voorbeeld (Python)
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://some.example/user')
elem = browser.find_element_by_id('edit-name')
elem.send_keys('UserName')
elem = browser.find_element_by_id('edit-pass')
elem.send_keys('SecretPassword')
elem = browser.find_element_by_id('button-submit')
elem.click()
browser.quit()

© Fedict 2013. All rights reserved | p. 9
Enkele mogelijkheden


Navigatie





Invullen formulieren




Tekstvelden, select, ...

Zoeken specifieke HTML-elementen






Pagina's laden, page history
Navigeren naar frames, windows, alert dialogs

Via attributen ID, class, name
Via naam, CSS selector, XPath
Linken: via (zichtbare) tekst van link

Javascript, cookies, ...

© Fedict 2013. All rights reserved | p. 10
Beperkingen


Geen toegang tot onzichtbare elementen





Geen HTTP authentication / .htaccess




Vb: <input type=”hidden”>
=> “Echte” gebruiker heeft dit ook niet
Verschilt per browser / pop-up schermen invullen

Proxy configureren verschilt per browser

© Fedict 2013. All rights reserved | p. 11
Best practice: “Page Objects”


Extra abstractie





Nadeel




Scheiden applicatie-logica en HTML-elementen
Vb: “LoginPage” object
Extra werk vooraf (zelf te programmeren)

Voordelen



Bevordert hergebruik
Minder werk als HTML-code pagina wijzigt

© Fedict 2013. All rights reserved | p. 12
Voorbeeld Page Object gebruiken
from selenium import webdriver
from myexample import LoginPage
browser = webdriver.Firefox()
page = LoginPage(browser, 'http://some.example/user')
page.login('Username', 'Password')
browser.quit()

© Fedict 2013. All rights reserved | p. 13
Voorbeeld Page Object (LoginPage)
from selenium import webdriver
def login(self, username, password):
browser = self.browser
elem = browser.find_element_by_id('name')
elem.send_keys(username)
elem = browser.find_element_by_id('pass')
elem.send_keys(password)
elem = browser.find_element_by_id('button-submit')
elem.click()
def __init__(self, browser, url):
self.browser = browser
browser.get(url)

© Fedict 2013. All rights reserved | p. 14
Splinter

© Fedict 2013. All rights reserved
Overzicht


Python



(Iets) eenvoudigere API dan Selenium



Abstractie




PhantomJS / Selenium / Zope.testbrowser

Testen of bepaald element wel/niet aanwezig is


Via naam, ID, XPath, …



Testen of bepaalde tekst wel/niet aanwezig is



Functies voor pagina titel / url / HTML code

© Fedict 2013. All rights reserved | p. 16
Voorbeeld
from splinter import Browser
browser = Browser()
Browser.visit('http://some.example/user')
browser.fill('name', 'MyUserName')
browser.fill('pass', 'SecretPassword')
elem = browser.find_by_id('button-submit')
elem.first.click()
browser.quit()

© Fedict 2013. All rights reserved | p. 17
Behave

© Fedict 2013. All rights reserved
Behavior Driven Development (BDD)


“Agile” ontwikkeling



“Leesbare” test cases




Samenwerking business / techies

Tools voor verschillende programmeertalen





Python: Behave
Java: JBehave, Spock, Instinct …
Javascript: Jasmine
Ruby: Cucumber, RSpec, ...

© Fedict 2013. All rights reserved | p. 19
Behave


Python



Bechrijven testen in tekst files




Automatisch uitvoeren




Features, Scenarios, Steps
Command line / integratie IDE of andere tools

Rapportering


Console, JUnit rapport, eigen log file ...

© Fedict 2013. All rights reserved | p. 20
Features, Scenarios, Steps


Testen van “Feature”s




Via een of meer “Scenario”s




Vb: inloggen op een website
Met correcte / verkeerde username ...

Elk scenario bevat meerdere “Step”s



Ga naar website, log in, controleer …
Worden door programmeur gekoppeld aan code

© Fedict 2013. All rights reserved | p. 21
Voorbeeld Feature met Scenarios, Steps
Feature: testing the login form of The Example website
Scenario: log in with invalid users
Given the website "some.example"
When I log in with user "invalid" and password "wrong"
Then an error message must be displayed
Scenario: log in with valid user
Given the website "some.example"
When I log in with user "valid" and password "correct"
Then the connection must be secured
And a welcome message must be displayed

© Fedict 2013. All rights reserved | p. 22
Steps: Given, When, Then, And


Worden gekoppeld aan code / functies





Via annotaties
Alles na “Given” is eigenlijk een verwijzing

Parameters zijn mogelijk



Worden uit tekst gehaald via “gewone” match of regexp
Ook een (tekst) tabel is mogelijk

© Fedict 2013. All rights reserved | p. 23
Voorbeeld implementatie Step
from splinter import Browser
from myexample import LoginPage
@given('the website “{url}”')
def step_impl(self, url):
self.homepage = url
@when('I log in with user “{user}” and password “{pwd}”')
def step_impl(self, user, pwd):
page = LoginPage(self.browser, self.homepage)
page.login(user, pwd)
@then('the connection must be secured')
def step_impl(self):
assert self.browser.url.startswith('https')

© Fedict 2013. All rights reserved | p. 24
Voorbeeld complexere Step
Feature: testing the login form of The Example website
Scenario: log in with several invalid users
Given the website "some.example"
When I log in with an invalid username or password
| username | password |
| correct
| wrong
|
| wrong
| wrong
|
Then an error message must be displayed
“””
Invalid username or password.
Please try again.
“””

© Fedict 2013. All rights reserved | p. 25
Enkele handige functionaliteiten


Selecteren van uit te voeren Scenarios





Environment file





Via zelf te definiëren tags
Vb: @nl, @https, @mobile
Voor en/of na elke Feature en/of Scenario en/of Step
Vb: starten / afsluiten browser

“Work in Progress” mode



Stopt bij eerste fout
Geen error log naar console

© Fedict 2013. All rights reserved | p. 26
Voorbeeld Environment
from splinter import Browser
def before_all(self):
profile = { 'network.proxy.type': 1,
'network.proxy.http': 'myproxy.example',
'network.proxy.http_port': 8080 }
self.browser = Browser('firefox', profile_preferences=profile)
def after_all(self):
self.browser.quit()

© Fedict 2013. All rights reserved | p. 27
Vragen ?

© Fedict 2013. All rights reserved
Enkele linken


http://www.w3.org/TR/webdriver



http://www.seleniumhq.org



http://selenium-python.readthedocs.org



http://splinter.cobrateam.info



http://pythonhosted.org/behave



https://saucelabs.com

© Fedict 2013. All rights reserved | p. 29
Bedankt !
Bart Hanssens / Fedict
Maria-Theresiastraat 1
1000 Brussel, Belgium
@BartHanssens
bart.hanssens [at] fedict.be | www.fedict.belgium.be

© Fedict 2013. All rights reserved

Weitere ähnliche Inhalte

Ähnlich wie Websites testen met Selenium en Behave

Flex In De Praktijk
Flex In De PraktijkFlex In De Praktijk
Flex In De Praktijkmarcel panse
 
Mijn eerste Joomla! plugin
Mijn eerste Joomla! pluginMijn eerste Joomla! plugin
Mijn eerste Joomla! pluginStudioDeOorzaak
 
PFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsPFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsRichard Tuin
 
Drupal Uitgebreide Starters Training
Drupal Uitgebreide Starters TrainingDrupal Uitgebreide Starters Training
Drupal Uitgebreide Starters TrainingLuciuswebsystems
 
Expert Sessie: Joomla Usability: Plugins
Expert Sessie: Joomla Usability: PluginsExpert Sessie: Joomla Usability: Plugins
Expert Sessie: Joomla Usability: PluginsYireo
 
XPages Introductie
XPages IntroductieXPages Introductie
XPages IntroductieRob Bontekoe
 
Demo Juwelier applicatie
Demo Juwelier applicatieDemo Juwelier applicatie
Demo Juwelier applicatiedd354
 
Ict2 trm- werking internet
Ict2 trm- werking internetIct2 trm- werking internet
Ict2 trm- werking internetkaatversele
 
Introductie Drupal development
Introductie Drupal developmentIntroductie Drupal development
Introductie Drupal developmentBart Hanssens
 

Ähnlich wie Websites testen met Selenium en Behave (13)

WSO2 Mashup Server
WSO2 Mashup ServerWSO2 Mashup Server
WSO2 Mashup Server
 
Flex In De Praktijk
Flex In De PraktijkFlex In De Praktijk
Flex In De Praktijk
 
Mijn eerste Joomla! plugin
Mijn eerste Joomla! pluginMijn eerste Joomla! plugin
Mijn eerste Joomla! plugin
 
The Rails way
The Rails wayThe Rails way
The Rails way
 
PFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsPFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele tests
 
Drupal Uitgebreide Starters Training
Drupal Uitgebreide Starters TrainingDrupal Uitgebreide Starters Training
Drupal Uitgebreide Starters Training
 
Html5 App
Html5 AppHtml5 App
Html5 App
 
Expert Sessie: Joomla Usability: Plugins
Expert Sessie: Joomla Usability: PluginsExpert Sessie: Joomla Usability: Plugins
Expert Sessie: Joomla Usability: Plugins
 
XPages Introductie
XPages IntroductieXPages Introductie
XPages Introductie
 
Demo Juwelier applicatie
Demo Juwelier applicatieDemo Juwelier applicatie
Demo Juwelier applicatie
 
Ict2 trm- werking internet
Ict2 trm- werking internetIct2 trm- werking internet
Ict2 trm- werking internet
 
Introductie Drupal development
Introductie Drupal developmentIntroductie Drupal development
Introductie Drupal development
 
Presentatie joomladagen 2017
Presentatie joomladagen 2017Presentatie joomladagen 2017
Presentatie joomladagen 2017
 

Mehr von Bart Hanssens

OpenFed, a Drupal distribution
OpenFed, a Drupal distributionOpenFed, a Drupal distribution
OpenFed, a Drupal distributionBart Hanssens
 
Open Summer of Code in Belgium
Open Summer of Code in BelgiumOpen Summer of Code in Belgium
Open Summer of Code in BelgiumBart Hanssens
 
Open Belgium 2022: Prepare To Code
Open Belgium 2022: Prepare To CodeOpen Belgium 2022: Prepare To Code
Open Belgium 2022: Prepare To CodeBart Hanssens
 
Werkgroep metadata: INSPIRE - DCAT-AP mapping
Werkgroep metadata: INSPIRE - DCAT-AP mappingWerkgroep metadata: INSPIRE - DCAT-AP mapping
Werkgroep metadata: INSPIRE - DCAT-AP mappingBart Hanssens
 
Quarkus, Jib én OpenJ9
Quarkus, Jib én OpenJ9Quarkus, Jib én OpenJ9
Quarkus, Jib én OpenJ9Bart Hanssens
 
Open Data at the Federal Level 2021
Open Data at the Federal Level 2021Open Data at the Federal Level 2021
Open Data at the Federal Level 2021Bart Hanssens
 
Open Data workshop Agoria ICT
Open Data workshop Agoria ICTOpen Data workshop Agoria ICT
Open Data workshop Agoria ICTBart Hanssens
 
Atelier Open Data / Agoria ICT
Atelier Open Data / Agoria ICTAtelier Open Data / Agoria ICT
Atelier Open Data / Agoria ICTBart Hanssens
 
Open Source and Open Data
Open Source and Open DataOpen Source and Open Data
Open Source and Open DataBart Hanssens
 
Open Community Projects
Open Community ProjectsOpen Community Projects
Open Community ProjectsBart Hanssens
 
From webform to API using microframeworks
From webform to API using microframeworksFrom webform to API using microframeworks
From webform to API using microframeworksBart Hanssens
 
Linked Data: Introductie
Linked Data: IntroductieLinked Data: Introductie
Linked Data: IntroductieBart Hanssens
 
Open data, what's cooking at the federal level 2020
Open data, what's cooking at the federal level 2020Open data, what's cooking at the federal level 2020
Open data, what's cooking at the federal level 2020Bart Hanssens
 
BOSA DG DT: opendata et intégrateur de services
BOSA DG DT: opendata et intégrateur de servicesBOSA DG DT: opendata et intégrateur de services
BOSA DG DT: opendata et intégrateur de servicesBart Hanssens
 
Local and Regional digital transformation in Belgium
Local and Regional digital transformation in BelgiumLocal and Regional digital transformation in Belgium
Local and Regional digital transformation in BelgiumBart Hanssens
 
Voordeel halen uit zoekmachines en semantic web
Voordeel halen uit zoekmachines en semantic webVoordeel halen uit zoekmachines en semantic web
Voordeel halen uit zoekmachines en semantic webBart Hanssens
 

Mehr von Bart Hanssens (20)

OpenFed, a Drupal distribution
OpenFed, a Drupal distributionOpenFed, a Drupal distribution
OpenFed, a Drupal distribution
 
Open Summer of Code in Belgium
Open Summer of Code in BelgiumOpen Summer of Code in Belgium
Open Summer of Code in Belgium
 
Open Belgium 2022: Prepare To Code
Open Belgium 2022: Prepare To CodeOpen Belgium 2022: Prepare To Code
Open Belgium 2022: Prepare To Code
 
Werkgroep metadata: INSPIRE - DCAT-AP mapping
Werkgroep metadata: INSPIRE - DCAT-AP mappingWerkgroep metadata: INSPIRE - DCAT-AP mapping
Werkgroep metadata: INSPIRE - DCAT-AP mapping
 
Overzicht DCAT-AP
Overzicht DCAT-APOverzicht DCAT-AP
Overzicht DCAT-AP
 
Quarkus, Jib én OpenJ9
Quarkus, Jib én OpenJ9Quarkus, Jib én OpenJ9
Quarkus, Jib én OpenJ9
 
Open Data at the Federal Level 2021
Open Data at the Federal Level 2021Open Data at the Federal Level 2021
Open Data at the Federal Level 2021
 
Open Data workshop Agoria ICT
Open Data workshop Agoria ICTOpen Data workshop Agoria ICT
Open Data workshop Agoria ICT
 
Atelier Open Data / Agoria ICT
Atelier Open Data / Agoria ICTAtelier Open Data / Agoria ICT
Atelier Open Data / Agoria ICT
 
Open Source and Open Data
Open Source and Open DataOpen Source and Open Data
Open Source and Open Data
 
Données ouvertes
Données ouvertesDonnées ouvertes
Données ouvertes
 
Open Data
Open DataOpen Data
Open Data
 
Open Community Projects
Open Community ProjectsOpen Community Projects
Open Community Projects
 
From webform to API using microframeworks
From webform to API using microframeworksFrom webform to API using microframeworks
From webform to API using microframeworks
 
Linked Data: Introductie
Linked Data: IntroductieLinked Data: Introductie
Linked Data: Introductie
 
JavaVMs en GraalVM
JavaVMs en GraalVMJavaVMs en GraalVM
JavaVMs en GraalVM
 
Open data, what's cooking at the federal level 2020
Open data, what's cooking at the federal level 2020Open data, what's cooking at the federal level 2020
Open data, what's cooking at the federal level 2020
 
BOSA DG DT: opendata et intégrateur de services
BOSA DG DT: opendata et intégrateur de servicesBOSA DG DT: opendata et intégrateur de services
BOSA DG DT: opendata et intégrateur de services
 
Local and Regional digital transformation in Belgium
Local and Regional digital transformation in BelgiumLocal and Regional digital transformation in Belgium
Local and Regional digital transformation in Belgium
 
Voordeel halen uit zoekmachines en semantic web
Voordeel halen uit zoekmachines en semantic webVoordeel halen uit zoekmachines en semantic web
Voordeel halen uit zoekmachines en semantic web
 

Websites testen met Selenium en Behave

  • 1. Websites testen met Behave en Selenium Fedict – Brussel – 11 oktober 2013 © Fedict 2013. All rights reserved
  • 2. Agenda © Fedict 2013. All rights reserved
  • 4. Websites testen © Fedict 2013. All rights reserved
  • 5. Verschillende soorten (complementair)  Schaalbaarheid / load testing  Vb: JMeter  Beveiliging  Toegankelijkheid   Valideren HTML   Vb: AnySurfer Vb: W3C Markup Validator Via browser / eindgebruiker test  Vb: Selenium © Fedict 2013. All rights reserved | p. 5
  • 6. Selenium © Fedict 2013. All rights reserved
  • 7. Selenium  Automatiseren browser acties   Open source   Niet bedoeld voor load testing, HTML validaties... http://www.seleniumhq.org Verzameling tools     Selenium IDE (Firefox plugin) (Selenium Remote Control) Selenium WebDriver Selenium Grid (testen op meerdere servers tegelijk) © Fedict 2013. All rights reserved | p. 7
  • 8. Selenium Web Driver  Sturen browser     Ondersteuning voor meerdere browsers     Openen en sluiten browser Openen pagina, klikken op buttons, invullen velden, ... Testen van aanwezigheid elementen, tekst ... Firefox 3.6+, HTMLUnit Chrome 12+, IE 7+, Opera 8+ IOS, Android browser Via verschillende programmeertalen   Java, C#, Python, Ruby (3rd party) PHP, Perl, … © Fedict 2013. All rights reserved | p. 8
  • 9. Voorbeeld (Python) from selenium import webdriver browser = webdriver.Firefox() browser.get('http://some.example/user') elem = browser.find_element_by_id('edit-name') elem.send_keys('UserName') elem = browser.find_element_by_id('edit-pass') elem.send_keys('SecretPassword') elem = browser.find_element_by_id('button-submit') elem.click() browser.quit() © Fedict 2013. All rights reserved | p. 9
  • 10. Enkele mogelijkheden  Navigatie    Invullen formulieren   Tekstvelden, select, ... Zoeken specifieke HTML-elementen     Pagina's laden, page history Navigeren naar frames, windows, alert dialogs Via attributen ID, class, name Via naam, CSS selector, XPath Linken: via (zichtbare) tekst van link Javascript, cookies, ... © Fedict 2013. All rights reserved | p. 10
  • 11. Beperkingen  Geen toegang tot onzichtbare elementen    Geen HTTP authentication / .htaccess   Vb: <input type=”hidden”> => “Echte” gebruiker heeft dit ook niet Verschilt per browser / pop-up schermen invullen Proxy configureren verschilt per browser © Fedict 2013. All rights reserved | p. 11
  • 12. Best practice: “Page Objects”  Extra abstractie    Nadeel   Scheiden applicatie-logica en HTML-elementen Vb: “LoginPage” object Extra werk vooraf (zelf te programmeren) Voordelen   Bevordert hergebruik Minder werk als HTML-code pagina wijzigt © Fedict 2013. All rights reserved | p. 12
  • 13. Voorbeeld Page Object gebruiken from selenium import webdriver from myexample import LoginPage browser = webdriver.Firefox() page = LoginPage(browser, 'http://some.example/user') page.login('Username', 'Password') browser.quit() © Fedict 2013. All rights reserved | p. 13
  • 14. Voorbeeld Page Object (LoginPage) from selenium import webdriver def login(self, username, password): browser = self.browser elem = browser.find_element_by_id('name') elem.send_keys(username) elem = browser.find_element_by_id('pass') elem.send_keys(password) elem = browser.find_element_by_id('button-submit') elem.click() def __init__(self, browser, url): self.browser = browser browser.get(url) © Fedict 2013. All rights reserved | p. 14
  • 15. Splinter © Fedict 2013. All rights reserved
  • 16. Overzicht  Python  (Iets) eenvoudigere API dan Selenium  Abstractie   PhantomJS / Selenium / Zope.testbrowser Testen of bepaald element wel/niet aanwezig is  Via naam, ID, XPath, …  Testen of bepaalde tekst wel/niet aanwezig is  Functies voor pagina titel / url / HTML code © Fedict 2013. All rights reserved | p. 16
  • 17. Voorbeeld from splinter import Browser browser = Browser() Browser.visit('http://some.example/user') browser.fill('name', 'MyUserName') browser.fill('pass', 'SecretPassword') elem = browser.find_by_id('button-submit') elem.first.click() browser.quit() © Fedict 2013. All rights reserved | p. 17
  • 18. Behave © Fedict 2013. All rights reserved
  • 19. Behavior Driven Development (BDD)  “Agile” ontwikkeling  “Leesbare” test cases   Samenwerking business / techies Tools voor verschillende programmeertalen     Python: Behave Java: JBehave, Spock, Instinct … Javascript: Jasmine Ruby: Cucumber, RSpec, ... © Fedict 2013. All rights reserved | p. 19
  • 20. Behave  Python  Bechrijven testen in tekst files   Automatisch uitvoeren   Features, Scenarios, Steps Command line / integratie IDE of andere tools Rapportering  Console, JUnit rapport, eigen log file ... © Fedict 2013. All rights reserved | p. 20
  • 21. Features, Scenarios, Steps  Testen van “Feature”s   Via een of meer “Scenario”s   Vb: inloggen op een website Met correcte / verkeerde username ... Elk scenario bevat meerdere “Step”s   Ga naar website, log in, controleer … Worden door programmeur gekoppeld aan code © Fedict 2013. All rights reserved | p. 21
  • 22. Voorbeeld Feature met Scenarios, Steps Feature: testing the login form of The Example website Scenario: log in with invalid users Given the website "some.example" When I log in with user "invalid" and password "wrong" Then an error message must be displayed Scenario: log in with valid user Given the website "some.example" When I log in with user "valid" and password "correct" Then the connection must be secured And a welcome message must be displayed © Fedict 2013. All rights reserved | p. 22
  • 23. Steps: Given, When, Then, And  Worden gekoppeld aan code / functies    Via annotaties Alles na “Given” is eigenlijk een verwijzing Parameters zijn mogelijk   Worden uit tekst gehaald via “gewone” match of regexp Ook een (tekst) tabel is mogelijk © Fedict 2013. All rights reserved | p. 23
  • 24. Voorbeeld implementatie Step from splinter import Browser from myexample import LoginPage @given('the website “{url}”') def step_impl(self, url): self.homepage = url @when('I log in with user “{user}” and password “{pwd}”') def step_impl(self, user, pwd): page = LoginPage(self.browser, self.homepage) page.login(user, pwd) @then('the connection must be secured') def step_impl(self): assert self.browser.url.startswith('https') © Fedict 2013. All rights reserved | p. 24
  • 25. Voorbeeld complexere Step Feature: testing the login form of The Example website Scenario: log in with several invalid users Given the website "some.example" When I log in with an invalid username or password | username | password | | correct | wrong | | wrong | wrong | Then an error message must be displayed “”” Invalid username or password. Please try again. “”” © Fedict 2013. All rights reserved | p. 25
  • 26. Enkele handige functionaliteiten  Selecteren van uit te voeren Scenarios    Environment file    Via zelf te definiëren tags Vb: @nl, @https, @mobile Voor en/of na elke Feature en/of Scenario en/of Step Vb: starten / afsluiten browser “Work in Progress” mode   Stopt bij eerste fout Geen error log naar console © Fedict 2013. All rights reserved | p. 26
  • 27. Voorbeeld Environment from splinter import Browser def before_all(self): profile = { 'network.proxy.type': 1, 'network.proxy.http': 'myproxy.example', 'network.proxy.http_port': 8080 } self.browser = Browser('firefox', profile_preferences=profile) def after_all(self): self.browser.quit() © Fedict 2013. All rights reserved | p. 27
  • 28. Vragen ? © Fedict 2013. All rights reserved
  • 30. Bedankt ! Bart Hanssens / Fedict Maria-Theresiastraat 1 1000 Brussel, Belgium @BartHanssens bart.hanssens [at] fedict.be | www.fedict.belgium.be © Fedict 2013. All rights reserved