Your SlideShare is downloading. ×
Selenium 2 for PHP(Unit)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Selenium 2 for PHP(Unit)

11,076
views

Published on


0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
11,076
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
87
Comments
0
Likes
6
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Selenium 2for PHP(Unit) Fabrizio Branca T3DD12
  • 2. Fabrizio BrancaSystem DeveloperAOE mediaWiesbadenTYPO3 & MagentoTwitter: @fbrncBlog: http://www.fabrizio-branca.de
  • 3. You?!• Who has any experience with automated testing? (PHPUnit,…)• Who has used Selenium 1?• Who has used Selenium 2 / Webdriver?
  • 4. http://www.flickr.com/photos/dieselbug2007/414348333/
  • 5. Testing• Unit testing• Performance testing• Load testing• Integration testing• Acceptance testing
  • 6. What is Selenium?
  • 7. Selenium’s Tool Suite• Selenium IDE• Selenium 1 (aka. Selenium RC or Remote Control)• Selenium 2 (aka. Selenium Webdriver)• Selenium-Grid
  • 8. Selenium Architecture
  • 9. Selenium + WebDriver 2004: 2006: Selenium WebDriver (Jason Huggins, (Simon Stewart, ThoughtWorks) Google) 2009: Selenium 2
  • 10. Why Selenium 2?• New possibilities – File uploads – Browser functions (back/forward) – Switch between urls – Control mouse• Different behaviour – Typing into input boxes – Interacting with invisible elements – Viewport
  • 11. Selenium 2• Firefox• HTMLUnit• IE• Chrome (needs extra driver)• iPhone / iPad• Android• …
  • 12. Selenium Server• Download: http://seleniumhq.org/download/• Launch: start java -jar C:ProgrammeSeleniumselenium-server-standalone-2.20.0.jar
  • 13. Rest API• http://code.google.com/p/selenium/wiki/Js onWireProtocol• Json over HTTP
  • 14. PHP Api• Selenium 1: PHPUnit_Selenium (Sebastian Bergmann)• Selenium 2 – REST-Service (Json over HTTP) – Implementations: • PHPUnit_Selenium • https://github.com/chibimagic/WebDriver-PHP/ • http://code.google.com/p/php-webdriver-bindings/ • https://github.com/facebook/php-webdriver https://github.com/robocoder/php-webdriver https://github.com/fbrnc/php-webdriver
  • 15. php-webdriver• „A very thin wrapper of WebDriver“• Server API (Json over HTTP)
  • 16. „Menta“ – Selenium Framework
  • 17. Why „Menta“?
  • 18. Menta• Selenium Testing Framework• Connects to Selenium 2• Build on top of php-webdriver• Developer friendly api to raw Selenium commands• Drop-In replacement for PHPUnit- Selenium• https://github.com/fbrnc/Menta
  • 19. Menta• Requires PHP 5.3 (using closures)• Session management (incl. close on CTRL+C and fatal php errors)• Event/Observer• Configuration Management• Create Suite Utility• Listeners – HTML report (incl. Screenshots) – Verbose text report• Components• Abstract PHPUnit Testcases• Selenium1 facade
  • 20. Components• PageObjects• http://www.typo3-media.com/blog/window-driver-page-object- selenium-tests.html• Other general purpose components – WebServiceApi (Magento) – Curl – HTML/CSS/JS Validator – Imap
  • 21. Configuration• PHPUnit• default.xml + phpunit.xml• Menta bootstrap.php
  • 22. File structure
  • 23. Selecting elements$element = $this->getSession()->element(array( using => WebDriver_Container::XPATH, value => //ul/li);# ... or ...$helper = Menta_ComponentManager::get( Menta_Component_Helper_Common);$element = $helper->getElement(css=#menu li.first);
  • 24. Interacting with elements• $element->click();• $this->getSession()->click();• $this->getSession()->buttondown();• $this->getSession()->buttonup();• $this->getSession()->touch();• $this->getSession()->moveto();
  • 25. Session Management• Capabilities• Menta_SessionManager• ->getSession($forceNew = false);• ->activeSessionExists()• ->closeSession()• Automatic closing sessions on errors and end of tests
  • 26. Implicit Wait• Implicitly waiting for elements that are not available yet
  • 27. Screenshots• Explict screenshots• Automatically taking screenshots on errors and failing tests and embed them into html report (on client side)
  • 28. Demo
  • 29. CI integration Build Install on Unit tests package latest Selenium Install on QA tests deploy Load Install on Install on tests stage production
  • 30. Verbose Result Printer
  • 31. HTML Result
  • 32. Further reading• http://www.qaautomation.net/?p=365• http://www.qaautomation.net/?p=498• http://css.dzone.com/articles/selenium-2- php-code• http://rostislav- matl.blogspot.de/2011/03/moving-to- selenium-2-on-webdriver-part.html
  • 33. Questions?Twitter: @fbrncBlog: http://www.fabrizio-branca.de