1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeaunamespace Facebook\WebDriver; 4*04fd306cSNickeau 5*04fd306cSNickeau/** 6*04fd306cSNickeau * The basic 8 mechanisms supported by webdriver to locate a web element. 7*04fd306cSNickeau * ie. 'class name', 'css selector', 'id', 'name', 'link text', 8*04fd306cSNickeau * 'partial link text', 'tag name' and 'xpath'. 9*04fd306cSNickeau * 10*04fd306cSNickeau * @see WebDriver::findElement, WebDriverElement::findElement 11*04fd306cSNickeau */ 12*04fd306cSNickeauclass WebDriverBy 13*04fd306cSNickeau{ 14*04fd306cSNickeau /** 15*04fd306cSNickeau * @var string 16*04fd306cSNickeau */ 17*04fd306cSNickeau private $mechanism; 18*04fd306cSNickeau /** 19*04fd306cSNickeau * @var string 20*04fd306cSNickeau */ 21*04fd306cSNickeau private $value; 22*04fd306cSNickeau 23*04fd306cSNickeau protected function __construct($mechanism, $value) 24*04fd306cSNickeau { 25*04fd306cSNickeau $this->mechanism = $mechanism; 26*04fd306cSNickeau $this->value = $value; 27*04fd306cSNickeau } 28*04fd306cSNickeau 29*04fd306cSNickeau /** 30*04fd306cSNickeau * @return string 31*04fd306cSNickeau */ 32*04fd306cSNickeau public function getMechanism() 33*04fd306cSNickeau { 34*04fd306cSNickeau return $this->mechanism; 35*04fd306cSNickeau } 36*04fd306cSNickeau 37*04fd306cSNickeau /** 38*04fd306cSNickeau * @return string 39*04fd306cSNickeau */ 40*04fd306cSNickeau public function getValue() 41*04fd306cSNickeau { 42*04fd306cSNickeau return $this->value; 43*04fd306cSNickeau } 44*04fd306cSNickeau 45*04fd306cSNickeau /** 46*04fd306cSNickeau * Locates elements whose class name contains the search value; compound class 47*04fd306cSNickeau * names are not permitted. 48*04fd306cSNickeau * 49*04fd306cSNickeau * @param string $class_name 50*04fd306cSNickeau * @return static 51*04fd306cSNickeau */ 52*04fd306cSNickeau public static function className($class_name) 53*04fd306cSNickeau { 54*04fd306cSNickeau return new static('class name', $class_name); 55*04fd306cSNickeau } 56*04fd306cSNickeau 57*04fd306cSNickeau /** 58*04fd306cSNickeau * Locates elements matching a CSS selector. 59*04fd306cSNickeau * 60*04fd306cSNickeau * @param string $css_selector 61*04fd306cSNickeau * @return static 62*04fd306cSNickeau */ 63*04fd306cSNickeau public static function cssSelector($css_selector) 64*04fd306cSNickeau { 65*04fd306cSNickeau return new static('css selector', $css_selector); 66*04fd306cSNickeau } 67*04fd306cSNickeau 68*04fd306cSNickeau /** 69*04fd306cSNickeau * Locates elements whose ID attribute matches the search value. 70*04fd306cSNickeau * 71*04fd306cSNickeau * @param string $id 72*04fd306cSNickeau * @return static 73*04fd306cSNickeau */ 74*04fd306cSNickeau public static function id($id) 75*04fd306cSNickeau { 76*04fd306cSNickeau return new static('id', $id); 77*04fd306cSNickeau } 78*04fd306cSNickeau 79*04fd306cSNickeau /** 80*04fd306cSNickeau * Locates elements whose NAME attribute matches the search value. 81*04fd306cSNickeau * 82*04fd306cSNickeau * @param string $name 83*04fd306cSNickeau * @return static 84*04fd306cSNickeau */ 85*04fd306cSNickeau public static function name($name) 86*04fd306cSNickeau { 87*04fd306cSNickeau return new static('name', $name); 88*04fd306cSNickeau } 89*04fd306cSNickeau 90*04fd306cSNickeau /** 91*04fd306cSNickeau * Locates anchor elements whose visible text matches the search value. 92*04fd306cSNickeau * 93*04fd306cSNickeau * @param string $link_text 94*04fd306cSNickeau * @return static 95*04fd306cSNickeau */ 96*04fd306cSNickeau public static function linkText($link_text) 97*04fd306cSNickeau { 98*04fd306cSNickeau return new static('link text', $link_text); 99*04fd306cSNickeau } 100*04fd306cSNickeau 101*04fd306cSNickeau /** 102*04fd306cSNickeau * Locates anchor elements whose visible text partially matches the search 103*04fd306cSNickeau * value. 104*04fd306cSNickeau * 105*04fd306cSNickeau * @param string $partial_link_text 106*04fd306cSNickeau * @return static 107*04fd306cSNickeau */ 108*04fd306cSNickeau public static function partialLinkText($partial_link_text) 109*04fd306cSNickeau { 110*04fd306cSNickeau return new static('partial link text', $partial_link_text); 111*04fd306cSNickeau } 112*04fd306cSNickeau 113*04fd306cSNickeau /** 114*04fd306cSNickeau * Locates elements whose tag name matches the search value. 115*04fd306cSNickeau * 116*04fd306cSNickeau * @param string $tag_name 117*04fd306cSNickeau * @return static 118*04fd306cSNickeau */ 119*04fd306cSNickeau public static function tagName($tag_name) 120*04fd306cSNickeau { 121*04fd306cSNickeau return new static('tag name', $tag_name); 122*04fd306cSNickeau } 123*04fd306cSNickeau 124*04fd306cSNickeau /** 125*04fd306cSNickeau * Locates elements matching an XPath expression. 126*04fd306cSNickeau * 127*04fd306cSNickeau * @param string $xpath 128*04fd306cSNickeau * @return static 129*04fd306cSNickeau */ 130*04fd306cSNickeau public static function xpath($xpath) 131*04fd306cSNickeau { 132*04fd306cSNickeau return new static('xpath', $xpath); 133*04fd306cSNickeau } 134*04fd306cSNickeau} 135