Skip to content

Supports the PageObject pattern for PHP with Selenium2

License

Notifications You must be signed in to change notification settings

eggnaube/PageFactory

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PageFactory for PHP

Supports the PageObject pattern for PHP with Selenium2

Installation

Install with composer

{
    "require": {
        "tzander/page-factory": "dev-master"
    }
}

Example

You need to include the Autoload.php and create a page class.

 require_once __DIR__ . '/library/Autoload.php';

 class BingSearchPage {

    /**
     * @var PHPUnit_Extensions_Selenium2TestCase_Element
     */
     public $sb_form_q;

     public function search() {
         $this->sb_form_q->value('selenium');
         $this->sb_form_q->submit();
         return PageFactory::initElements($this->getTestCase(), 'SearchResultPage');
     }
 }

The property must be public and either the name or the id attribute of the element.

Now in order to have an initialized object to return we need to to the following:

  class  SearchTest{

    public function shouldfindSelenium(){
          $page = PageFactory::initElements($this, 'BingSearchPage');
          $resultPage = $page->search();
          $this->assertInstanceOf('SearchResultPage', $resultPage);
    }
  }

Using Annotation

You can also use the @find annotations in order to locate the element.

  /**
  * @find byXpath='a[@class=test]'
  */
  public $link;

Or any of these find methods:

byId, byName, byXpath, byCssSelector ,byClassName.

About

Supports the PageObject pattern for PHP with Selenium2

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%