Your SlideShare is downloading. ×
0
Webbrowser-Automatisierung mit Python und           Selenium WebDriver                 Andi Albrecht            FrOSCon 20...
Andi Albrecht – @andialbrecht             Erster Python-Kontakt vor ca. 10 Jahren als Studentische             Hilfskraft ...
¨Ubersicht      Selenium & WebDriver      selenium-Python-Modul      API      Web-Applikationen testen      Tipps & Tricks...
Selenium & WebDriver             Selenium – Set an Tools zur Browser-Automatisierung.             WebDriver               ...
selenium-Python-Modul, InstallationSelenium & WebDriver   selenium-Python-Modul      API      Web-Applikationen testen    ...
selenium-Python-Modul, Installation      pip install seleniumSelenium & WebDriver   selenium-Python-Modul      API      We...
selenium-Python-Modul, Installation      pip install selenium             Python-Module             Firefox-Driver        ...
selenium-Python-Modul, Erste Schritte      $ python      Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)      >>> from s...
selenium-Python-Modul, Erste Schritte      $ python      Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)      >>> from s...
selenium-Python-Modul, Erste Schritte      $ python      Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)      >>> from s...
selenium-Python-Modul, Erste Schritte      $ python      Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)      >>> from s...
selenium-Python-Modul, Erste Schritte      $ python      Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)      >>> from s...
API – Browsersteuerung      # Browser initialisieren      from selenium import webdriver      browser = webdriver.Firefox(...
API – Elemente finden      # Seitentitel      browser.title     # --> ’Example’      # Elemente finden      browser.find el...
API – Elemente ansprechen      # Beispiel: Formular ausf¨llen und absenden                               u      form = bro...
API – JavaScript      browser.execute_script(’alert("Hello World!")’)Selenium & WebDriver   selenium-Python-Modul      API...
Web-Applikationen testen 1    #!/usr/bin/env python 2 3    import unittest 4 5    from selenium import webdriver 6 7 8    ...
Wait!             Browser-Kommandos warten nicht (click, submit, JavaScript,             ...)             eigene Warteschl...
Wait!              Browser-Kommandos warten nicht (click, submit, JavaScript,              ...)              eigene Wartes...
Page-Pattern      class LoginPage(object):          def login_as(self, username, password):              # some magic     ...
Page-Pattern      class LoginPage(object):          def login_as(self, username, password):              # some magic     ...
sst – Selenium Simple Test             Wrapper um selenium-Modul             Einfache API, f¨r Testentwickler gedacht¡    ...
sst – Selenium Simple Test 1    from sst.actions import * 2 3    go_to(’http://froscon.org’) 4    assert_title_contains(’F...
Demo, Fragen?                       Quelle: Classmates PC w Programmable Robot, by chang sen, on Flickr                   ...
Danke!      Links      Python-Modul                 http://pypi.python.org/pypi/selenium/      Selenium-Homepage          ...
Upcoming SlideShare
Loading in...5
×

Webbrowser-Automatisierung mit Python und Selenium WebDriver

2,905

Published on

Webbrowser mit Python über Selenium WebDriver fernsteuern und der Einsatz zum Test von Web-Anwendungen.

FrOSCon 2012, Python-Track

Published in: Technology
1 Comment
1 Like
Statistics
Notes
  • hi can you please post the English version of this document? Thanks !
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
2,905
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
64
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Webbrowser-Automatisierung mit Python und Selenium WebDriver"

  1. 1. Webbrowser-Automatisierung mit Python und Selenium WebDriver Andi Albrecht FrOSCon 2012, Python-Track http://froscon.org 26. August 2012
  2. 2. Andi Albrecht – @andialbrecht Erster Python-Kontakt vor ca. 10 Jahren als Studentische Hilfskraft bei der DFG Aktuell: Anwendungsentwickler f¨r Webapplikationen bei u ProUnix in Bonn Entwicklung und Pflege mittlerer und großer Systeme OpenSource: Rietveld Code Review Tool, python-sqlparse, CrunchyFrog, ... Mitglied der Python-User-Group pyCologneSelenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  3. 3. ¨Ubersicht Selenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks DemoSelenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  4. 4. Selenium & WebDriver Selenium – Set an Tools zur Browser-Automatisierung. WebDriver ist eine API, um Browser anzusteuern ersetzt Selenium RC (seit Selenium 2.0) WebDriver API ist W3C-Spezifikation (Status: Working Draft) HtmlUnit, Firefox, IE, Chrome, Opera, iPhone, Android, ... Homepage: http://seleniumhq.org/ Aktuelle Version (21. August 2012): 2.25.0 (Python 2.24.0)Selenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  5. 5. selenium-Python-Modul, InstallationSelenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  6. 6. selenium-Python-Modul, Installation pip install seleniumSelenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  7. 7. selenium-Python-Modul, Installation pip install selenium Python-Module Firefox-Driver Treiber f¨r Chrome und andere Browser brauchen noch ein u bisschen mehr Setup.Selenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  8. 8. selenium-Python-Modul, Erste Schritte $ python Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53) >>> from selenium import webdriver >>> browser = webdriver.Firefox() >>> browser.get(’http://google.com’) >>> browser.find element by tag name(’title’) <selenium.webdriver.remote.webelement.WebElement ...>Selenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  9. 9. selenium-Python-Modul, Erste Schritte $ python Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53) >>> from selenium import webdriver >>> browser = webdriver.Firefox() >>> browser.get(’http://google.com’) >>> browser.find element by tag name(’title’) <selenium.webdriver.remote.webelement.WebElement ...>Selenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  10. 10. selenium-Python-Modul, Erste Schritte $ python Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53) >>> from selenium import webdriver >>> browser = webdriver.Firefox() >>> browser.get(’http://google.com’) >>> browser.find element by tag name(’title’) <selenium.webdriver.remote.webelement.WebElement ...>Selenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  11. 11. selenium-Python-Modul, Erste Schritte $ python Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53) >>> from selenium import webdriver >>> browser = webdriver.Firefox() >>> browser.get(’http://google.com’) >>> browser.find element by tag name(’title’) <selenium.webdriver.remote.webelement.WebElement ...>Selenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  12. 12. selenium-Python-Modul, Erste Schritte $ python Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53) >>> from selenium import webdriver >>> browser = webdriver.Firefox() >>> browser.get(’http://google.com’) >>> browser.find element by tag name(’title’) <selenium.webdriver.remote.webelement.WebElement ...>Selenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  13. 13. API – Browsersteuerung # Browser initialisieren from selenium import webdriver browser = webdriver.Firefox() # URL aufrufen browser.get(’http://example.com’) # Seite neu laden browser.refresh() # History browser.back() browser.forward() # Screenshot erstellen browser.get_screenshot_as_file(’/tmp/screenshot.png’) # Browser schließen browser.quit()Selenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  14. 14. API – Elemente finden # Seitentitel browser.title # --> ’Example’ # Elemente finden browser.find element by class name(’clsname’) browser.find element by css selector(’div.myclass p’) browser.find element by id(’myid’) browser.find element by link text(’Klick hier’) browser.find element by name(’email’) browser.find element by partial link text(’hier’) browser.find element by tag name(’a’) browser.find element by xpath(’//*/body’) browser.find elements by *Selenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  15. 15. API – Elemente ansprechen # Beispiel: Formular ausf¨llen und absenden u form = browser.find_element_by_id(’myform’) input = form.find_element_by_name(’email’) input.clear() input.send_keys(’foo@example.com’) input.submit() # entspricht Enter im Input-Feld # Beispiel: Link klicken link = browser.find_element_by_link_text(’Anmelden’) link.click() # Beispiel: Elemente untersuchen elem = browser.find_element_by_class_name(’hidden’) elem.is_displayed() # --> False browser.find_element_by_link_text(’Show hidden’).click() elem.is_displayed() # --> True elem.location # --> {u’x’: 870, u’y’: 50} elem.size # --> {’height’: 29, ’width’: 90} elem.tag_name # --> ’div’ elem.text # --> ’text content of div’Selenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  16. 16. API – JavaScript browser.execute_script(’alert("Hello World!")’)Selenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  17. 17. Web-Applikationen testen 1 #!/usr/bin/env python 2 3 import unittest 4 5 from selenium import webdriver 6 7 8 class TestTitle(unittest.TestCase): 910 def setUp(self):11 # Toggle comments to test with a different browser12 self.driver = webdriver.Chrome()13 #self.driver = webdriver.Firefox()14 #self.driver = wevdriver.Ie()1516 def tearDown(self):17 self.driver.close()1819 def test_title_tag(self):20 self.driver.get(’http://google.com’)21 title_tag = self.driver.find_element_by_tag_name(’title’)22 self.assertEqual(title_tag.text, ’Google’)232425 if __name__ == ’__main__’:26 unittest.main()Selenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  18. 18. Wait! Browser-Kommandos warten nicht (click, submit, JavaScript, ...) eigene Warteschleifen sind erforderlich (und sinnvoll!)Selenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  19. 19. Wait! Browser-Kommandos warten nicht (click, submit, JavaScript, ...) eigene Warteschleifen sind erforderlich (und sinnvoll!) from selenium.webdriver.support.wait import WebDriverWait [...] elem = browser.find element by id(’save’) elem.click() # sendet POST, l¨dt die Seite neu a WebDriverWait(browser, 3).until( lambda x: x.find element by tag name(’body’))Selenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  20. 20. Page-Pattern class LoginPage(object): def login_as(self, username, password): # some magic return HomePage(self.browser) def login_expect_exception(self, username, password): # .... return LoginPage(self.browser) def get_exception(self): # .... return "that happened"Selenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  21. 21. Page-Pattern class LoginPage(object): def login_as(self, username, password): # some magic return HomePage(self.browser) def login_expect_exception(self, username, password): # .... return LoginPage(self.browser) def get_exception(self): # .... return "that happened" The public methods represent the services that the page offers Try not to expose the internals of the page Generally don’t make assertions Methods return other PageObjects Need not represent an entire page Different results for the same action are modelled as different methods Quelle: http://code.google.com/p/selenium/wiki/PageObjectsSelenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  22. 22. sst – Selenium Simple Test Wrapper um selenium-Modul Einfache API, f¨r Testentwickler gedacht¡ u Parametrisierbare Tests Screenshots bei Fehlern Headless-Mode out-of-the-box (ben¨tigt xvfb) o Homepage: http://testutils.org/sst/Selenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  23. 23. sst – Selenium Simple Test 1 from sst.actions import * 2 3 go_to(’http://froscon.org’) 4 assert_title_contains(’FrOSCon’) 5 click_link(get_element(tag=’a’, text=’Program’)) 6 click_link(get_element(tag=’a’, text=’program of lectures’)) 7 assert_title_contains(’froscon2012: FrOSCon Program’) 8 click_link(get_element(tag=’a’, text_regex=’Day 2.*26$’)) 9 click_link(get_element(tag=’a’, text=’>’))10 click_link(get_element(tag=’a’, text_regex=’.*Selenium.*’))11 click_link(get_element(tag=’a’, text=’Click here’))12 set_radio_value(’event_feedback_rating_2’)13 write_textfield(14 ’event_feedback_comment’,15 ’Yay! I’ve learned to automate feedback for my next FrOSCon talk!’)16 take_screenshot(’/home/andi/Arbeitsfl¨che/feedback.png’) a17 raw_input(’Done.’)Selenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  24. 24. Demo, Fragen? Quelle: Classmates PC w Programmable Robot, by chang sen, on Flickr http://www.flickr.com/photos/senchang/5000312557/Selenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  25. 25. Danke! Links Python-Modul http://pypi.python.org/pypi/selenium/ Selenium-Homepage http://seleniumhq.org/ pyCologne http://pycologne.de, Treffen jeden 2. Mittwoch Kontakt E-Mail albrecht.andi@gmail.com Twitter @andialbrecht Homepage andialbrecht.deSelenium & WebDriver selenium-Python-Modul API Web-Applikationen testen Tipps & Tricks Demo Webbrowser-Automatisierung mit Python und Selenium WebDriver / Andi Albrecht / FrOSCon 2012
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×