1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeaunamespace Facebook\WebDriver\Interactions; 4*04fd306cSNickeau 5*04fd306cSNickeauuse Facebook\WebDriver\Interactions\Touch\WebDriverDoubleTapAction; 6*04fd306cSNickeauuse Facebook\WebDriver\Interactions\Touch\WebDriverDownAction; 7*04fd306cSNickeauuse Facebook\WebDriver\Interactions\Touch\WebDriverFlickAction; 8*04fd306cSNickeauuse Facebook\WebDriver\Interactions\Touch\WebDriverFlickFromElementAction; 9*04fd306cSNickeauuse Facebook\WebDriver\Interactions\Touch\WebDriverLongPressAction; 10*04fd306cSNickeauuse Facebook\WebDriver\Interactions\Touch\WebDriverMoveAction; 11*04fd306cSNickeauuse Facebook\WebDriver\Interactions\Touch\WebDriverScrollAction; 12*04fd306cSNickeauuse Facebook\WebDriver\Interactions\Touch\WebDriverScrollFromElementAction; 13*04fd306cSNickeauuse Facebook\WebDriver\Interactions\Touch\WebDriverTapAction; 14*04fd306cSNickeauuse Facebook\WebDriver\Interactions\Touch\WebDriverTouchScreen; 15*04fd306cSNickeauuse Facebook\WebDriver\WebDriver; 16*04fd306cSNickeauuse Facebook\WebDriver\WebDriverElement; 17*04fd306cSNickeauuse Facebook\WebDriver\WebDriverUpAction; 18*04fd306cSNickeau 19*04fd306cSNickeau/** 20*04fd306cSNickeau * WebDriver action builder for touch events 21*04fd306cSNickeau */ 22*04fd306cSNickeauclass WebDriverTouchActions extends WebDriverActions 23*04fd306cSNickeau{ 24*04fd306cSNickeau /** 25*04fd306cSNickeau * @var WebDriverTouchScreen 26*04fd306cSNickeau */ 27*04fd306cSNickeau protected $touchScreen; 28*04fd306cSNickeau 29*04fd306cSNickeau public function __construct(WebDriver $driver) 30*04fd306cSNickeau { 31*04fd306cSNickeau parent::__construct($driver); 32*04fd306cSNickeau $this->touchScreen = $driver->getTouch(); 33*04fd306cSNickeau } 34*04fd306cSNickeau 35*04fd306cSNickeau /** 36*04fd306cSNickeau * @param WebDriverElement $element 37*04fd306cSNickeau * @return WebDriverTouchActions 38*04fd306cSNickeau */ 39*04fd306cSNickeau public function tap(WebDriverElement $element) 40*04fd306cSNickeau { 41*04fd306cSNickeau $this->action->addAction( 42*04fd306cSNickeau new WebDriverTapAction($this->touchScreen, $element) 43*04fd306cSNickeau ); 44*04fd306cSNickeau 45*04fd306cSNickeau return $this; 46*04fd306cSNickeau } 47*04fd306cSNickeau 48*04fd306cSNickeau /** 49*04fd306cSNickeau * @param int $x 50*04fd306cSNickeau * @param int $y 51*04fd306cSNickeau * @return WebDriverTouchActions 52*04fd306cSNickeau */ 53*04fd306cSNickeau public function down($x, $y) 54*04fd306cSNickeau { 55*04fd306cSNickeau $this->action->addAction( 56*04fd306cSNickeau new WebDriverDownAction($this->touchScreen, $x, $y) 57*04fd306cSNickeau ); 58*04fd306cSNickeau 59*04fd306cSNickeau return $this; 60*04fd306cSNickeau } 61*04fd306cSNickeau 62*04fd306cSNickeau /** 63*04fd306cSNickeau * @param int $x 64*04fd306cSNickeau * @param int $y 65*04fd306cSNickeau * @return WebDriverTouchActions 66*04fd306cSNickeau */ 67*04fd306cSNickeau public function up($x, $y) 68*04fd306cSNickeau { 69*04fd306cSNickeau $this->action->addAction( 70*04fd306cSNickeau new WebDriverUpAction($this->touchScreen, $x, $y) 71*04fd306cSNickeau ); 72*04fd306cSNickeau 73*04fd306cSNickeau return $this; 74*04fd306cSNickeau } 75*04fd306cSNickeau 76*04fd306cSNickeau /** 77*04fd306cSNickeau * @param int $x 78*04fd306cSNickeau * @param int $y 79*04fd306cSNickeau * @return WebDriverTouchActions 80*04fd306cSNickeau */ 81*04fd306cSNickeau public function move($x, $y) 82*04fd306cSNickeau { 83*04fd306cSNickeau $this->action->addAction( 84*04fd306cSNickeau new WebDriverMoveAction($this->touchScreen, $x, $y) 85*04fd306cSNickeau ); 86*04fd306cSNickeau 87*04fd306cSNickeau return $this; 88*04fd306cSNickeau } 89*04fd306cSNickeau 90*04fd306cSNickeau /** 91*04fd306cSNickeau * @param int $x 92*04fd306cSNickeau * @param int $y 93*04fd306cSNickeau * @return WebDriverTouchActions 94*04fd306cSNickeau */ 95*04fd306cSNickeau public function scroll($x, $y) 96*04fd306cSNickeau { 97*04fd306cSNickeau $this->action->addAction( 98*04fd306cSNickeau new WebDriverScrollAction($this->touchScreen, $x, $y) 99*04fd306cSNickeau ); 100*04fd306cSNickeau 101*04fd306cSNickeau return $this; 102*04fd306cSNickeau } 103*04fd306cSNickeau 104*04fd306cSNickeau /** 105*04fd306cSNickeau * @param WebDriverElement $element 106*04fd306cSNickeau * @param int $x 107*04fd306cSNickeau * @param int $y 108*04fd306cSNickeau * @return WebDriverTouchActions 109*04fd306cSNickeau */ 110*04fd306cSNickeau public function scrollFromElement(WebDriverElement $element, $x, $y) 111*04fd306cSNickeau { 112*04fd306cSNickeau $this->action->addAction( 113*04fd306cSNickeau new WebDriverScrollFromElementAction($this->touchScreen, $element, $x, $y) 114*04fd306cSNickeau ); 115*04fd306cSNickeau 116*04fd306cSNickeau return $this; 117*04fd306cSNickeau } 118*04fd306cSNickeau 119*04fd306cSNickeau /** 120*04fd306cSNickeau * @param WebDriverElement $element 121*04fd306cSNickeau * @return WebDriverTouchActions 122*04fd306cSNickeau */ 123*04fd306cSNickeau public function doubleTap(WebDriverElement $element) 124*04fd306cSNickeau { 125*04fd306cSNickeau $this->action->addAction( 126*04fd306cSNickeau new WebDriverDoubleTapAction($this->touchScreen, $element) 127*04fd306cSNickeau ); 128*04fd306cSNickeau 129*04fd306cSNickeau return $this; 130*04fd306cSNickeau } 131*04fd306cSNickeau 132*04fd306cSNickeau /** 133*04fd306cSNickeau * @param WebDriverElement $element 134*04fd306cSNickeau * @return WebDriverTouchActions 135*04fd306cSNickeau */ 136*04fd306cSNickeau public function longPress(WebDriverElement $element) 137*04fd306cSNickeau { 138*04fd306cSNickeau $this->action->addAction( 139*04fd306cSNickeau new WebDriverLongPressAction($this->touchScreen, $element) 140*04fd306cSNickeau ); 141*04fd306cSNickeau 142*04fd306cSNickeau return $this; 143*04fd306cSNickeau } 144*04fd306cSNickeau 145*04fd306cSNickeau /** 146*04fd306cSNickeau * @param int $x 147*04fd306cSNickeau * @param int $y 148*04fd306cSNickeau * @return WebDriverTouchActions 149*04fd306cSNickeau */ 150*04fd306cSNickeau public function flick($x, $y) 151*04fd306cSNickeau { 152*04fd306cSNickeau $this->action->addAction( 153*04fd306cSNickeau new WebDriverFlickAction($this->touchScreen, $x, $y) 154*04fd306cSNickeau ); 155*04fd306cSNickeau 156*04fd306cSNickeau return $this; 157*04fd306cSNickeau } 158*04fd306cSNickeau 159*04fd306cSNickeau /** 160*04fd306cSNickeau * @param WebDriverElement $element 161*04fd306cSNickeau * @param int $x 162*04fd306cSNickeau * @param int $y 163*04fd306cSNickeau * @param int $speed 164*04fd306cSNickeau * @return WebDriverTouchActions 165*04fd306cSNickeau */ 166*04fd306cSNickeau public function flickFromElement(WebDriverElement $element, $x, $y, $speed) 167*04fd306cSNickeau { 168*04fd306cSNickeau $this->action->addAction( 169*04fd306cSNickeau new WebDriverFlickFromElementAction( 170*04fd306cSNickeau $this->touchScreen, 171*04fd306cSNickeau $element, 172*04fd306cSNickeau $x, 173*04fd306cSNickeau $y, 174*04fd306cSNickeau $speed 175*04fd306cSNickeau ) 176*04fd306cSNickeau ); 177*04fd306cSNickeau 178*04fd306cSNickeau return $this; 179*04fd306cSNickeau } 180*04fd306cSNickeau} 181