| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 | <?php// Copyright 2004-present Facebook. All Rights Reserved.//// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this file except in compliance with the License.// You may obtain a copy of the License at////     http://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.namespace Facebook\WebDriver;use Facebook\WebDriver\Remote\DriverCommand;use Facebook\WebDriver\Remote\ExecuteMethod;use InvalidArgumentException;/** * Managing stuff you would do in a browser. */class WebDriverOptions{    /**     * @var ExecuteMethod     */    protected $executor;    public function __construct(ExecuteMethod $executor)    {        $this->executor = $executor;    }    /**     * Add a specific cookie.     *     * @see Cookie for description of possible cookie properties     * @param Cookie|array $cookie Cookie object. May be also created from array for compatibility reasons.     * @return WebDriverOptions The current instance.     */    public function addCookie($cookie)    {        if (is_array($cookie)) {            $cookie = Cookie::createFromArray($cookie);        }        if (!$cookie instanceof Cookie) {            throw new InvalidArgumentException('Cookie must be set from instance of Cookie class or from array.');        }        $this->executor->execute(            DriverCommand::ADD_COOKIE,            ['cookie' => $cookie->toArray()]        );        return $this;    }    /**     * Delete all the cookies that are currently visible.     *     * @return WebDriverOptions The current instance.     */    public function deleteAllCookies()    {        $this->executor->execute(DriverCommand::DELETE_ALL_COOKIES);        return $this;    }    /**     * Delete the cookie with the give name.     *     * @param string $name     * @return WebDriverOptions The current instance.     */    public function deleteCookieNamed($name)    {        $this->executor->execute(            DriverCommand::DELETE_COOKIE,            [':name' => $name]        );        return $this;    }    /**     * Get the cookie with a given name.     *     * @param string $name     * @return Cookie|null The cookie, or null if no cookie with the given name is presented.     */    public function getCookieNamed($name)    {        $cookies = $this->getCookies();        foreach ($cookies as $cookie) {            if ($cookie['name'] === $name) {                return $cookie;            }        }        return null;    }    /**     * Get all the cookies for the current domain.     *     * @return Cookie[] The array of cookies presented.     */    public function getCookies()    {        $cookieArrays = $this->executor->execute(DriverCommand::GET_ALL_COOKIES);        $cookies = [];        foreach ($cookieArrays as $cookieArray) {            $cookies[] = Cookie::createFromArray($cookieArray);        }        return $cookies;    }    /**     * Return the interface for managing driver timeouts.     *     * @return WebDriverTimeouts     */    public function timeouts()    {        return new WebDriverTimeouts($this->executor);    }    /**     * An abstraction allowing the driver to manipulate the browser's window     *     * @return WebDriverWindow     * @see WebDriverWindow     */    public function window()    {        return new WebDriverWindow($this->executor);    }    /**     * Get the log for a given log type. Log buffer is reset after each request.     *     * @param string $log_type The log type.     * @return array The list of log entries.     * @see https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#log-type     */    public function getLog($log_type)    {        return $this->executor->execute(            DriverCommand::GET_LOG,            ['type' => $log_type]        );    }    /**     * Get available log types.     *     * @return array The list of available log types.     * @see https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#log-type     */    public function getAvailableLogTypes()    {        return $this->executor->execute(DriverCommand::GET_AVAILABLE_LOG_TYPES);    }}
 |