xref: /plugin/combo/vendor/php-webdriver/webdriver/lib/Interactions/WebDriverTouchActions.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
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