1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeaunamespace Facebook\WebDriver\Remote; 4*04fd306cSNickeau 5*04fd306cSNickeauuse Facebook\WebDriver\Interactions\Touch\WebDriverTouchScreen; 6*04fd306cSNickeauuse Facebook\WebDriver\WebDriverElement; 7*04fd306cSNickeau 8*04fd306cSNickeau/** 9*04fd306cSNickeau * Execute touch commands for RemoteWebDriver. 10*04fd306cSNickeau */ 11*04fd306cSNickeauclass RemoteTouchScreen implements WebDriverTouchScreen 12*04fd306cSNickeau{ 13*04fd306cSNickeau /** 14*04fd306cSNickeau * @var RemoteExecuteMethod 15*04fd306cSNickeau */ 16*04fd306cSNickeau private $executor; 17*04fd306cSNickeau 18*04fd306cSNickeau /** 19*04fd306cSNickeau * @param RemoteExecuteMethod $executor 20*04fd306cSNickeau */ 21*04fd306cSNickeau public function __construct(RemoteExecuteMethod $executor) 22*04fd306cSNickeau { 23*04fd306cSNickeau $this->executor = $executor; 24*04fd306cSNickeau } 25*04fd306cSNickeau 26*04fd306cSNickeau /** 27*04fd306cSNickeau * @param WebDriverElement $element 28*04fd306cSNickeau * 29*04fd306cSNickeau * @return RemoteTouchScreen The instance. 30*04fd306cSNickeau */ 31*04fd306cSNickeau public function tap(WebDriverElement $element) 32*04fd306cSNickeau { 33*04fd306cSNickeau $this->executor->execute( 34*04fd306cSNickeau DriverCommand::TOUCH_SINGLE_TAP, 35*04fd306cSNickeau ['element' => $element->getID()] 36*04fd306cSNickeau ); 37*04fd306cSNickeau 38*04fd306cSNickeau return $this; 39*04fd306cSNickeau } 40*04fd306cSNickeau 41*04fd306cSNickeau /** 42*04fd306cSNickeau * @param WebDriverElement $element 43*04fd306cSNickeau * 44*04fd306cSNickeau * @return RemoteTouchScreen The instance. 45*04fd306cSNickeau */ 46*04fd306cSNickeau public function doubleTap(WebDriverElement $element) 47*04fd306cSNickeau { 48*04fd306cSNickeau $this->executor->execute( 49*04fd306cSNickeau DriverCommand::TOUCH_DOUBLE_TAP, 50*04fd306cSNickeau ['element' => $element->getID()] 51*04fd306cSNickeau ); 52*04fd306cSNickeau 53*04fd306cSNickeau return $this; 54*04fd306cSNickeau } 55*04fd306cSNickeau 56*04fd306cSNickeau /** 57*04fd306cSNickeau * @param int $x 58*04fd306cSNickeau * @param int $y 59*04fd306cSNickeau * 60*04fd306cSNickeau * @return RemoteTouchScreen The instance. 61*04fd306cSNickeau */ 62*04fd306cSNickeau public function down($x, $y) 63*04fd306cSNickeau { 64*04fd306cSNickeau $this->executor->execute(DriverCommand::TOUCH_DOWN, [ 65*04fd306cSNickeau 'x' => $x, 66*04fd306cSNickeau 'y' => $y, 67*04fd306cSNickeau ]); 68*04fd306cSNickeau 69*04fd306cSNickeau return $this; 70*04fd306cSNickeau } 71*04fd306cSNickeau 72*04fd306cSNickeau /** 73*04fd306cSNickeau * @param int $xspeed 74*04fd306cSNickeau * @param int $yspeed 75*04fd306cSNickeau * 76*04fd306cSNickeau * @return RemoteTouchScreen The instance. 77*04fd306cSNickeau */ 78*04fd306cSNickeau public function flick($xspeed, $yspeed) 79*04fd306cSNickeau { 80*04fd306cSNickeau $this->executor->execute(DriverCommand::TOUCH_FLICK, [ 81*04fd306cSNickeau 'xspeed' => $xspeed, 82*04fd306cSNickeau 'yspeed' => $yspeed, 83*04fd306cSNickeau ]); 84*04fd306cSNickeau 85*04fd306cSNickeau return $this; 86*04fd306cSNickeau } 87*04fd306cSNickeau 88*04fd306cSNickeau /** 89*04fd306cSNickeau * @param WebDriverElement $element 90*04fd306cSNickeau * @param int $xoffset 91*04fd306cSNickeau * @param int $yoffset 92*04fd306cSNickeau * @param int $speed 93*04fd306cSNickeau * 94*04fd306cSNickeau * @return RemoteTouchScreen The instance. 95*04fd306cSNickeau */ 96*04fd306cSNickeau public function flickFromElement(WebDriverElement $element, $xoffset, $yoffset, $speed) 97*04fd306cSNickeau { 98*04fd306cSNickeau $this->executor->execute(DriverCommand::TOUCH_FLICK, [ 99*04fd306cSNickeau 'xoffset' => $xoffset, 100*04fd306cSNickeau 'yoffset' => $yoffset, 101*04fd306cSNickeau 'element' => $element->getID(), 102*04fd306cSNickeau 'speed' => $speed, 103*04fd306cSNickeau ]); 104*04fd306cSNickeau 105*04fd306cSNickeau return $this; 106*04fd306cSNickeau } 107*04fd306cSNickeau 108*04fd306cSNickeau /** 109*04fd306cSNickeau * @param WebDriverElement $element 110*04fd306cSNickeau * 111*04fd306cSNickeau * @return RemoteTouchScreen The instance. 112*04fd306cSNickeau */ 113*04fd306cSNickeau public function longPress(WebDriverElement $element) 114*04fd306cSNickeau { 115*04fd306cSNickeau $this->executor->execute( 116*04fd306cSNickeau DriverCommand::TOUCH_LONG_PRESS, 117*04fd306cSNickeau ['element' => $element->getID()] 118*04fd306cSNickeau ); 119*04fd306cSNickeau 120*04fd306cSNickeau return $this; 121*04fd306cSNickeau } 122*04fd306cSNickeau 123*04fd306cSNickeau /** 124*04fd306cSNickeau * @param int $x 125*04fd306cSNickeau * @param int $y 126*04fd306cSNickeau * 127*04fd306cSNickeau * @return RemoteTouchScreen The instance. 128*04fd306cSNickeau */ 129*04fd306cSNickeau public function move($x, $y) 130*04fd306cSNickeau { 131*04fd306cSNickeau $this->executor->execute(DriverCommand::TOUCH_MOVE, [ 132*04fd306cSNickeau 'x' => $x, 133*04fd306cSNickeau 'y' => $y, 134*04fd306cSNickeau ]); 135*04fd306cSNickeau 136*04fd306cSNickeau return $this; 137*04fd306cSNickeau } 138*04fd306cSNickeau 139*04fd306cSNickeau /** 140*04fd306cSNickeau * @param int $xoffset 141*04fd306cSNickeau * @param int $yoffset 142*04fd306cSNickeau * 143*04fd306cSNickeau * @return RemoteTouchScreen The instance. 144*04fd306cSNickeau */ 145*04fd306cSNickeau public function scroll($xoffset, $yoffset) 146*04fd306cSNickeau { 147*04fd306cSNickeau $this->executor->execute(DriverCommand::TOUCH_SCROLL, [ 148*04fd306cSNickeau 'xoffset' => $xoffset, 149*04fd306cSNickeau 'yoffset' => $yoffset, 150*04fd306cSNickeau ]); 151*04fd306cSNickeau 152*04fd306cSNickeau return $this; 153*04fd306cSNickeau } 154*04fd306cSNickeau 155*04fd306cSNickeau /** 156*04fd306cSNickeau * @param WebDriverElement $element 157*04fd306cSNickeau * @param int $xoffset 158*04fd306cSNickeau * @param int $yoffset 159*04fd306cSNickeau * 160*04fd306cSNickeau * @return RemoteTouchScreen The instance. 161*04fd306cSNickeau */ 162*04fd306cSNickeau public function scrollFromElement(WebDriverElement $element, $xoffset, $yoffset) 163*04fd306cSNickeau { 164*04fd306cSNickeau $this->executor->execute(DriverCommand::TOUCH_SCROLL, [ 165*04fd306cSNickeau 'element' => $element->getID(), 166*04fd306cSNickeau 'xoffset' => $xoffset, 167*04fd306cSNickeau 'yoffset' => $yoffset, 168*04fd306cSNickeau ]); 169*04fd306cSNickeau 170*04fd306cSNickeau return $this; 171*04fd306cSNickeau } 172*04fd306cSNickeau 173*04fd306cSNickeau /** 174*04fd306cSNickeau * @param int $x 175*04fd306cSNickeau * @param int $y 176*04fd306cSNickeau * 177*04fd306cSNickeau * @return RemoteTouchScreen The instance. 178*04fd306cSNickeau */ 179*04fd306cSNickeau public function up($x, $y) 180*04fd306cSNickeau { 181*04fd306cSNickeau $this->executor->execute(DriverCommand::TOUCH_UP, [ 182*04fd306cSNickeau 'x' => $x, 183*04fd306cSNickeau 'y' => $y, 184*04fd306cSNickeau ]); 185*04fd306cSNickeau 186*04fd306cSNickeau return $this; 187*04fd306cSNickeau } 188*04fd306cSNickeau} 189