xref: /template/strap/vendor/php-webdriver/webdriver/lib/Exception/WebDriverException.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
1*04fd306cSNickeau<?php
2*04fd306cSNickeau
3*04fd306cSNickeaunamespace Facebook\WebDriver\Exception;
4*04fd306cSNickeau
5*04fd306cSNickeauuse Exception;
6*04fd306cSNickeau
7*04fd306cSNickeau/**
8*04fd306cSNickeau * @see https://w3c.github.io/webdriver/#errors
9*04fd306cSNickeau */
10*04fd306cSNickeauclass WebDriverException extends Exception
11*04fd306cSNickeau{
12*04fd306cSNickeau    private $results;
13*04fd306cSNickeau
14*04fd306cSNickeau    /**
15*04fd306cSNickeau     * @param string $message
16*04fd306cSNickeau     * @param mixed $results
17*04fd306cSNickeau     */
18*04fd306cSNickeau    public function __construct($message, $results = null)
19*04fd306cSNickeau    {
20*04fd306cSNickeau        parent::__construct($message);
21*04fd306cSNickeau        $this->results = $results;
22*04fd306cSNickeau    }
23*04fd306cSNickeau
24*04fd306cSNickeau    /**
25*04fd306cSNickeau     * @return mixed
26*04fd306cSNickeau     */
27*04fd306cSNickeau    public function getResults()
28*04fd306cSNickeau    {
29*04fd306cSNickeau        return $this->results;
30*04fd306cSNickeau    }
31*04fd306cSNickeau
32*04fd306cSNickeau    /**
33*04fd306cSNickeau     * Throw WebDriverExceptions based on WebDriver status code.
34*04fd306cSNickeau     *
35*04fd306cSNickeau     * @param int|string $status_code
36*04fd306cSNickeau     * @param string $message
37*04fd306cSNickeau     * @param mixed $results
38*04fd306cSNickeau     *
39*04fd306cSNickeau     * @throws ElementClickInterceptedException
40*04fd306cSNickeau     * @throws ElementNotInteractableException
41*04fd306cSNickeau     * @throws ElementNotSelectableException
42*04fd306cSNickeau     * @throws ElementNotVisibleException
43*04fd306cSNickeau     * @throws ExpectedException
44*04fd306cSNickeau     * @throws IMEEngineActivationFailedException
45*04fd306cSNickeau     * @throws IMENotAvailableException
46*04fd306cSNickeau     * @throws IndexOutOfBoundsException
47*04fd306cSNickeau     * @throws InsecureCertificateException
48*04fd306cSNickeau     * @throws InvalidArgumentException
49*04fd306cSNickeau     * @throws InvalidCookieDomainException
50*04fd306cSNickeau     * @throws InvalidCoordinatesException
51*04fd306cSNickeau     * @throws InvalidElementStateException
52*04fd306cSNickeau     * @throws InvalidSelectorException
53*04fd306cSNickeau     * @throws InvalidSessionIdException
54*04fd306cSNickeau     * @throws JavascriptErrorException
55*04fd306cSNickeau     * @throws MoveTargetOutOfBoundsException
56*04fd306cSNickeau     * @throws NoAlertOpenException
57*04fd306cSNickeau     * @throws NoCollectionException
58*04fd306cSNickeau     * @throws NoScriptResultException
59*04fd306cSNickeau     * @throws NoStringException
60*04fd306cSNickeau     * @throws NoStringLengthException
61*04fd306cSNickeau     * @throws NoStringWrapperException
62*04fd306cSNickeau     * @throws NoSuchAlertException
63*04fd306cSNickeau     * @throws NoSuchCollectionException
64*04fd306cSNickeau     * @throws NoSuchCookieException
65*04fd306cSNickeau     * @throws NoSuchDocumentException
66*04fd306cSNickeau     * @throws NoSuchDriverException
67*04fd306cSNickeau     * @throws NoSuchElementException
68*04fd306cSNickeau     * @throws NoSuchFrameException
69*04fd306cSNickeau     * @throws NoSuchWindowException
70*04fd306cSNickeau     * @throws NullPointerException
71*04fd306cSNickeau     * @throws ScriptTimeoutException
72*04fd306cSNickeau     * @throws SessionNotCreatedException
73*04fd306cSNickeau     * @throws StaleElementReferenceException
74*04fd306cSNickeau     * @throws TimeoutException
75*04fd306cSNickeau     * @throws UnableToCaptureScreenException
76*04fd306cSNickeau     * @throws UnableToSetCookieException
77*04fd306cSNickeau     * @throws UnexpectedAlertOpenException
78*04fd306cSNickeau     * @throws UnexpectedJavascriptException
79*04fd306cSNickeau     * @throws UnknownCommandException
80*04fd306cSNickeau     * @throws UnknownErrorException
81*04fd306cSNickeau     * @throws UnknownMethodException
82*04fd306cSNickeau     * @throws UnknownServerException
83*04fd306cSNickeau     * @throws UnrecognizedExceptionException
84*04fd306cSNickeau     * @throws UnsupportedOperationException
85*04fd306cSNickeau     * @throws XPathLookupException
86*04fd306cSNickeau     */
87*04fd306cSNickeau    public static function throwException($status_code, $message, $results)
88*04fd306cSNickeau    {
89*04fd306cSNickeau        if (is_string($status_code)) {
90*04fd306cSNickeau            // @see https://w3c.github.io/webdriver/#errors
91*04fd306cSNickeau            switch ($status_code) {
92*04fd306cSNickeau                case 'element click intercepted':
93*04fd306cSNickeau                    throw new ElementClickInterceptedException($message, $results);
94*04fd306cSNickeau                case 'element not interactable':
95*04fd306cSNickeau                    throw new ElementNotInteractableException($message, $results);
96*04fd306cSNickeau                case 'insecure certificate':
97*04fd306cSNickeau                    throw new InsecureCertificateException($message, $results);
98*04fd306cSNickeau                case 'invalid argument':
99*04fd306cSNickeau                    throw new InvalidArgumentException($message, $results);
100*04fd306cSNickeau                case 'invalid cookie domain':
101*04fd306cSNickeau                    throw new InvalidCookieDomainException($message, $results);
102*04fd306cSNickeau                case 'invalid element state':
103*04fd306cSNickeau                    throw new InvalidElementStateException($message, $results);
104*04fd306cSNickeau                case 'invalid selector':
105*04fd306cSNickeau                    throw new InvalidSelectorException($message, $results);
106*04fd306cSNickeau                case 'invalid session id':
107*04fd306cSNickeau                    throw new InvalidSessionIdException($message, $results);
108*04fd306cSNickeau                case 'javascript error':
109*04fd306cSNickeau                    throw new JavascriptErrorException($message, $results);
110*04fd306cSNickeau                case 'move target out of bounds':
111*04fd306cSNickeau                    throw new MoveTargetOutOfBoundsException($message, $results);
112*04fd306cSNickeau                case 'no such alert':
113*04fd306cSNickeau                    throw new NoSuchAlertException($message, $results);
114*04fd306cSNickeau                case 'no such cookie':
115*04fd306cSNickeau                    throw new NoSuchCookieException($message, $results);
116*04fd306cSNickeau                case 'no such element':
117*04fd306cSNickeau                    throw new NoSuchElementException($message, $results);
118*04fd306cSNickeau                case 'no such frame':
119*04fd306cSNickeau                    throw new NoSuchFrameException($message, $results);
120*04fd306cSNickeau                case 'no such window':
121*04fd306cSNickeau                    throw new NoSuchWindowException($message, $results);
122*04fd306cSNickeau                case 'script timeout':
123*04fd306cSNickeau                    throw new ScriptTimeoutException($message, $results);
124*04fd306cSNickeau                case 'session not created':
125*04fd306cSNickeau                    throw new SessionNotCreatedException($message, $results);
126*04fd306cSNickeau                case 'stale element reference':
127*04fd306cSNickeau                    throw new StaleElementReferenceException($message, $results);
128*04fd306cSNickeau                case 'timeout':
129*04fd306cSNickeau                    throw new TimeoutException($message, $results);
130*04fd306cSNickeau                case 'unable to set cookie':
131*04fd306cSNickeau                    throw new UnableToSetCookieException($message, $results);
132*04fd306cSNickeau                case 'unable to capture screen':
133*04fd306cSNickeau                    throw new UnableToCaptureScreenException($message, $results);
134*04fd306cSNickeau                case 'unexpected alert open':
135*04fd306cSNickeau                    throw new UnexpectedAlertOpenException($message, $results);
136*04fd306cSNickeau                case 'unknown command':
137*04fd306cSNickeau                    throw new UnknownCommandException($message, $results);
138*04fd306cSNickeau                case 'unknown error':
139*04fd306cSNickeau                    throw new UnknownErrorException($message, $results);
140*04fd306cSNickeau                case 'unknown method':
141*04fd306cSNickeau                    throw new UnknownMethodException($message, $results);
142*04fd306cSNickeau                case 'unsupported operation':
143*04fd306cSNickeau                    throw new UnsupportedOperationException($message, $results);
144*04fd306cSNickeau                default:
145*04fd306cSNickeau                    throw new UnrecognizedExceptionException($message, $results);
146*04fd306cSNickeau            }
147*04fd306cSNickeau        }
148*04fd306cSNickeau
149*04fd306cSNickeau        switch ($status_code) {
150*04fd306cSNickeau            case 1:
151*04fd306cSNickeau                throw new IndexOutOfBoundsException($message, $results);
152*04fd306cSNickeau            case 2:
153*04fd306cSNickeau                throw new NoCollectionException($message, $results);
154*04fd306cSNickeau            case 3:
155*04fd306cSNickeau                throw new NoStringException($message, $results);
156*04fd306cSNickeau            case 4:
157*04fd306cSNickeau                throw new NoStringLengthException($message, $results);
158*04fd306cSNickeau            case 5:
159*04fd306cSNickeau                throw new NoStringWrapperException($message, $results);
160*04fd306cSNickeau            case 6:
161*04fd306cSNickeau                throw new NoSuchDriverException($message, $results);
162*04fd306cSNickeau            case 7:
163*04fd306cSNickeau                throw new NoSuchElementException($message, $results);
164*04fd306cSNickeau            case 8:
165*04fd306cSNickeau                throw new NoSuchFrameException($message, $results);
166*04fd306cSNickeau            case 9:
167*04fd306cSNickeau                throw new UnknownCommandException($message, $results);
168*04fd306cSNickeau            case 10:
169*04fd306cSNickeau                throw new StaleElementReferenceException($message, $results);
170*04fd306cSNickeau            case 11:
171*04fd306cSNickeau                throw new ElementNotVisibleException($message, $results);
172*04fd306cSNickeau            case 12:
173*04fd306cSNickeau                throw new InvalidElementStateException($message, $results);
174*04fd306cSNickeau            case 13:
175*04fd306cSNickeau                throw new UnknownServerException($message, $results);
176*04fd306cSNickeau            case 14:
177*04fd306cSNickeau                throw new ExpectedException($message, $results);
178*04fd306cSNickeau            case 15:
179*04fd306cSNickeau                throw new ElementNotSelectableException($message, $results);
180*04fd306cSNickeau            case 16:
181*04fd306cSNickeau                throw new NoSuchDocumentException($message, $results);
182*04fd306cSNickeau            case 17:
183*04fd306cSNickeau                throw new UnexpectedJavascriptException($message, $results);
184*04fd306cSNickeau            case 18:
185*04fd306cSNickeau                throw new NoScriptResultException($message, $results);
186*04fd306cSNickeau            case 19:
187*04fd306cSNickeau                throw new XPathLookupException($message, $results);
188*04fd306cSNickeau            case 20:
189*04fd306cSNickeau                throw new NoSuchCollectionException($message, $results);
190*04fd306cSNickeau            case 21:
191*04fd306cSNickeau                throw new TimeoutException($message, $results);
192*04fd306cSNickeau            case 22:
193*04fd306cSNickeau                throw new NullPointerException($message, $results);
194*04fd306cSNickeau            case 23:
195*04fd306cSNickeau                throw new NoSuchWindowException($message, $results);
196*04fd306cSNickeau            case 24:
197*04fd306cSNickeau                throw new InvalidCookieDomainException($message, $results);
198*04fd306cSNickeau            case 25:
199*04fd306cSNickeau                throw new UnableToSetCookieException($message, $results);
200*04fd306cSNickeau            case 26:
201*04fd306cSNickeau                throw new UnexpectedAlertOpenException($message, $results);
202*04fd306cSNickeau            case 27:
203*04fd306cSNickeau                throw new NoAlertOpenException($message, $results);
204*04fd306cSNickeau            case 28:
205*04fd306cSNickeau                throw new ScriptTimeoutException($message, $results);
206*04fd306cSNickeau            case 29:
207*04fd306cSNickeau                throw new InvalidCoordinatesException($message, $results);
208*04fd306cSNickeau            case 30:
209*04fd306cSNickeau                throw new IMENotAvailableException($message, $results);
210*04fd306cSNickeau            case 31:
211*04fd306cSNickeau                throw new IMEEngineActivationFailedException($message, $results);
212*04fd306cSNickeau            case 32:
213*04fd306cSNickeau                throw new InvalidSelectorException($message, $results);
214*04fd306cSNickeau            case 33:
215*04fd306cSNickeau                throw new SessionNotCreatedException($message, $results);
216*04fd306cSNickeau            case 34:
217*04fd306cSNickeau                throw new MoveTargetOutOfBoundsException($message, $results);
218*04fd306cSNickeau            default:
219*04fd306cSNickeau                throw new UnrecognizedExceptionException($message, $results);
220*04fd306cSNickeau        }
221*04fd306cSNickeau    }
222*04fd306cSNickeau}
223